[PATCH 4.19 098/103] scsi: qla2xxx: fix rports not being mark as lost in sync fabric scan

From: Greg Kroah-Hartman
Date: Wed Jan 22 2020 - 04:44:22 EST


From: Martin Wilck <mwilck@xxxxxxxx>

commit d341e9a8f2cffe4000c610225c629f62c7489c74 upstream.

In qla2x00_find_all_fabric_devs(), fcport->flags & FCF_LOGIN_NEEDED is a
necessary condition for logging into new rports, but not for dropping lost
ones.

Fixes: 726b85487067 ("qla2xxx: Add framework for async fabric discovery")
Link: https://lore.kernel.org/r/20191122221912.20100-2-martin.wilck@xxxxxxxx
Tested-by: David Bond <dbond@xxxxxxxx>
Signed-off-by: Martin Wilck <mwilck@xxxxxxxx>
Acked-by: Himanshu Madhani <hmadhani@xxxxxxxxxxx>
Signed-off-by: Martin K. Petersen <martin.petersen@xxxxxxxxxx>
Signed-off-by: Greg Kroah-Hartman <gregkh@xxxxxxxxxxxxxxxxxxx>

---
drivers/scsi/qla2xxx/qla_init.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)

--- a/drivers/scsi/qla2xxx/qla_init.c
+++ b/drivers/scsi/qla2xxx/qla_init.c
@@ -5710,8 +5710,7 @@ qla2x00_find_all_fabric_devs(scsi_qla_ho
if (test_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags))
break;

- if ((fcport->flags & FCF_FABRIC_DEVICE) == 0 ||
- (fcport->flags & FCF_LOGIN_NEEDED) == 0)
+ if ((fcport->flags & FCF_FABRIC_DEVICE) == 0)
continue;

if (fcport->scan_state == QLA_FCPORT_SCAN) {
@@ -5734,7 +5733,8 @@ qla2x00_find_all_fabric_devs(scsi_qla_ho
}
}

- if (fcport->scan_state == QLA_FCPORT_FOUND)
+ if (fcport->scan_state == QLA_FCPORT_FOUND &&
+ (fcport->flags & FCF_LOGIN_NEEDED) != 0)
qla24xx_fcport_handle_login(vha, fcport);
}
return (rval);