scsi: qla2xxx: Serialize fc_port alloc in N2N
authorQuinn Tran <qutran@marvell.com>
Wed, 26 Feb 2020 22:40:18 +0000 (14:40 -0800)
committerMartin K. Petersen <martin.petersen@oracle.com>
Sat, 29 Feb 2020 01:32:35 +0000 (20:32 -0500)
For N2N, fc_port struct is created during report id acquisition.  At
later time, the loop resync (fabric, n2n, loop) would trigger the rest
of the login using the created fc_port struct.  The loop resync logic
can trigger another fc_port allocation if the 1st allocation was not
able to execute.  This patch prevents the 2nd allocation trigger.

Link: https://lore.kernel.org/r/20200226224022.24518-15-hmadhani@marvell.com
Signed-off-by: Himanshu Madhani <hmadhani@marvell.com>
Signed-off-by: Quinn Tran <qutran@marvell.com>
Signed-off-by: Martin K. Petersen <martin.petersen@oracle.com>
drivers/scsi/qla2xxx/qla_init.c
drivers/scsi/qla2xxx/qla_os.c

index 3d615cc..5b2deaa 100644 (file)
@@ -5147,6 +5147,7 @@ skip_login:
                        set_bit(LOCAL_LOOP_UPDATE, &vha->dpc_flags);
                        set_bit(LOOP_RESYNC_NEEDED, &vha->dpc_flags);
                }
+               return QLA_FUNCTION_FAILED;
        }
 
        found_devs = 0;
index faf63c2..96b654c 100644 (file)
@@ -5203,9 +5203,8 @@ void qla24xx_create_new_sess(struct scsi_qla_host *vha, struct qla_work_evt *e)
                                        fcport->n2n_flag = 1;
                                }
                                fcport->fw_login_state = 0;
-                               /*
-                                * wait link init done before sending login
-                                */
+
+                               schedule_delayed_work(&vha->scan.scan_work, 5);
                        } else {
                                qla24xx_fcport_handle_login(vha, fcport);
                        }