Re: [PATCH v2 04/11] qla2xxx: fix login timeout

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 




> On Aug 6, 2020, at 6:10 AM, Nilesh Javali <njavali@xxxxxxxxxxx> wrote:
> 
> From: Quinn Tran <qutran@xxxxxxxxxxx>
> 
> Multipath errors were seen during failback due to login timeout.
> The remote device sent LOGO, the local host teared down the session
> and did relogin. The RSCN arrived indicates remote device is going
> through failover after which the relogin is in a 20s timeout phase.
> At this point the driver is stuck in the relogin process.
> Add a fix to delete the session as part of abort/flush the login.
> 
> Signed-off-by: Quinn Tran <qutran@xxxxxxxxxxx>
> Signed-off-by: Nilesh Javali <njavali@xxxxxxxxxxx>
> ---
> drivers/scsi/qla2xxx/qla_gs.c     | 19 ++++++++++++++++---
> drivers/scsi/qla2xxx/qla_target.c |  2 +-
> 2 files changed, 17 insertions(+), 4 deletions(-)
> 
> diff --git a/drivers/scsi/qla2xxx/qla_gs.c b/drivers/scsi/qla2xxx/qla_gs.c
> index 8c30d9dbb48c..2d7a47a2873b 100644
> --- a/drivers/scsi/qla2xxx/qla_gs.c
> +++ b/drivers/scsi/qla2xxx/qla_gs.c
> @@ -3536,10 +3536,23 @@ void qla24xx_async_gnnft_done(scsi_qla_host_t *vha, srb_t *sp)
> 		}
> 
> 		if (fcport->scan_state != QLA_FCPORT_FOUND) {
> +			bool do_delete = false;
> +
> +			if (fcport->scan_needed &&
> +			    fcport->disc_state == DSC_LOGIN_PEND) {
> +				/* his cable just got disconnected after we
> +				 * send him a login. Do delete to prevent
> +				 * timeout
> +				 */

Small nit.. the comment should describe who is “his” in this case

> +				fcport->logout_on_delete = 1;
> +				do_delete = true;
> +			}
> +
> 			fcport->scan_needed = 0;
> -			if ((qla_dual_mode_enabled(vha) ||
> -				qla_ini_mode_enabled(vha)) &&
> -			    atomic_read(&fcport->state) == FCS_ONLINE) {
> +			if (((qla_dual_mode_enabled(vha) ||
> +			      qla_ini_mode_enabled(vha)) &&
> +			    atomic_read(&fcport->state) == FCS_ONLINE) ||
> +				do_delete) {
> 				if (fcport->loop_id != FC_NO_LOOP_ID) {
> 					if (fcport->flags & FCF_FCP2_DEVICE)
> 						fcport->logout_on_delete = 0;
> diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c
> index fbb80a043b4f..90289162dbd4 100644
> --- a/drivers/scsi/qla2xxx/qla_target.c
> +++ b/drivers/scsi/qla2xxx/qla_target.c
> @@ -1270,7 +1270,7 @@ void qlt_schedule_sess_for_deletion(struct fc_port *sess)
> 
> 	qla24xx_chk_fcp_state(sess);
> 
> -	ql_dbg(ql_dbg_tgt, sess->vha, 0xe001,
> +	ql_dbg(ql_dbg_disc, sess->vha, 0xe001,
> 	    "Scheduling sess %p for deletion %8phC\n",
> 	    sess, sess->port_name);
> 
> -- 
> 2.19.0.rc0
> 

Other than small nit. 

Reviewed-by: Himanshu Madhani <himanshu.madhani@xxxxxxxxxx>

--
Himanshu Madhani	 Oracle Linux Engineering





[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [SCSI Target Devel]     [Linux SCSI Target Infrastructure]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Linux IIO]     [Samba]     [Device Mapper]

  Powered by Linux