| From ffc81fc07efc94a04695a8c1d458a06aecaf9f30 Mon Sep 17 00:00:00 2001 |
| From: Giridhar Malavali <gmalavali@marvell.com> |
| Date: Tue, 2 Apr 2019 14:24:30 -0700 |
| Subject: scsi: qla2xxx: Set remote port devloss timeout to 0 |
| |
| From: Giridhar Malavali <gmalavali@marvell.com> |
| |
| commit ffc81fc07efc94a04695a8c1d458a06aecaf9f30 upstream. |
| |
| This patch sets remote_port_devloss value to 0. This indicates to FC-NVMe |
| transport that driver is unloading and transport should not retry. |
| |
| Fixes: e476fe8af5ff ("scsi: qla2xxx: Fix unload when NVMe devices are configured") |
| Cc: stable@vger.kernel.org |
| Signed-off-by: Giridhar Malavali <gmalavali@marvell.com> |
| Signed-off-by: Himanshu Madhani <hmadhani@marvell.com> |
| Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| |
| --- |
| drivers/scsi/qla2xxx/qla_nvme.c | 19 +++++++------------ |
| 1 file changed, 7 insertions(+), 12 deletions(-) |
| |
| --- a/drivers/scsi/qla2xxx/qla_nvme.c |
| +++ b/drivers/scsi/qla2xxx/qla_nvme.c |
| @@ -615,7 +615,6 @@ static void qla_nvme_unregister_remote_p |
| struct fc_port *fcport = container_of(work, struct fc_port, |
| nvme_del_work); |
| struct qla_nvme_rport *qla_rport, *trport; |
| - scsi_qla_host_t *base_vha; |
| |
| if (!IS_ENABLED(CONFIG_NVME_FC)) |
| return; |
| @@ -623,23 +622,19 @@ static void qla_nvme_unregister_remote_p |
| ql_log(ql_log_warn, NULL, 0x2112, |
| "%s: unregister remoteport on %p\n",__func__, fcport); |
| |
| - base_vha = pci_get_drvdata(fcport->vha->hw->pdev); |
| - if (test_bit(PFLG_DRIVER_REMOVING, &base_vha->pci_flags)) { |
| - ql_dbg(ql_dbg_disc, fcport->vha, 0x2114, |
| - "%s: Notify FC-NVMe transport, set devloss=0\n", |
| - __func__); |
| - |
| - nvme_fc_set_remoteport_devloss(fcport->nvme_remote_port, 0); |
| - } |
| - |
| list_for_each_entry_safe(qla_rport, trport, |
| &fcport->vha->nvme_rport_list, list) { |
| if (qla_rport->fcport == fcport) { |
| ql_log(ql_log_info, fcport->vha, 0x2113, |
| "%s: fcport=%p\n", __func__, fcport); |
| + nvme_fc_set_remoteport_devloss |
| + (fcport->nvme_remote_port, 0); |
| init_completion(&fcport->nvme_del_done); |
| - nvme_fc_unregister_remoteport( |
| - fcport->nvme_remote_port); |
| + if (nvme_fc_unregister_remoteport |
| + (fcport->nvme_remote_port)) |
| + ql_log(ql_log_info, fcport->vha, 0x2114, |
| + "%s: Failed to unregister nvme_remote_port\n", |
| + __func__); |
| wait_for_completion(&fcport->nvme_del_done); |
| break; |
| } |