Re: [PATCH 02/13] qla2xxx: Fix disk failure to rediscover

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

 




> On Mar 8, 2022, at 12:20 AM, Nilesh Javali <njavali@xxxxxxxxxxx> wrote:
> 
> From: Quinn Tran <qutran@xxxxxxxxxxx>
> 
> User experience some of the LUN failed to rediscovered after
> long cable pull test. The issue is triggered by a race
> condition between driver setting session online state vs upper layer/UL
							   ^^^^^^^^^^^^^ 
I would just remove “upper layer” in above statement. 

> starting the LUN scan process at the same time. Current code
> set the online state after notifying upper layer the session is
> available. In this case, UL was faster on the trigger to start
> the LUN scan process before driver could set the session in
> online state. LUN scan ends up with failure due to the session
> online check was failing.
> 
> Set the online state before reporting to UL
> of the availability of the session.
> 

The above 2 lines are redundant with the first paragraph. 

> Cc: stable@xxxxxxxxxxxxxxx
> Fixes: aecf043443d3 ("scsi: qla2xxx: Fix Remote port registration")
> Signed-off-by: Quinn Tran <qutran@xxxxxxxxxxx>
> Signed-off-by: Nilesh Javali <njavali@xxxxxxxxxxx>
> ---
> drivers/scsi/qla2xxx/qla_init.c | 5 +++--
> drivers/scsi/qla2xxx/qla_nvme.c | 5 +++++
> 2 files changed, 8 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/scsi/qla2xxx/qla_init.c b/drivers/scsi/qla2xxx/qla_init.c
> index 835ed4179887..6ffe44b805b6 100644
> --- a/drivers/scsi/qla2xxx/qla_init.c
> +++ b/drivers/scsi/qla2xxx/qla_init.c
> @@ -5758,6 +5758,8 @@ qla2x00_reg_remote_port(scsi_qla_host_t *vha, fc_port_t *fcport)
> 	if (atomic_read(&fcport->state) == FCS_ONLINE)
> 		return;
> 
> +	qla2x00_set_fcport_state(fcport, FCS_ONLINE);
> +
> 	rport_ids.node_name = wwn_to_u64(fcport->node_name);
> 	rport_ids.port_name = wwn_to_u64(fcport->port_name);
> 	rport_ids.port_id = fcport->d_id.b.domain << 16 |
> @@ -5858,6 +5860,7 @@ qla2x00_update_fcport(scsi_qla_host_t *vha, fc_port_t *fcport)
> 		qla2x00_reg_remote_port(vha, fcport);
> 		break;
> 	case MODE_TARGET:
> +		qla2x00_set_fcport_state(fcport, FCS_ONLINE);
> 		if (!vha->vha_tgt.qla_tgt->tgt_stop &&
> 			!vha->vha_tgt.qla_tgt->tgt_stopped)
> 			qlt_fc_port_added(vha, fcport);
> @@ -5875,8 +5878,6 @@ qla2x00_update_fcport(scsi_qla_host_t *vha, fc_port_t *fcport)
> 	if (NVME_TARGET(vha->hw, fcport))
> 		qla_nvme_register_remote(vha, fcport);
> 
> -	qla2x00_set_fcport_state(fcport, FCS_ONLINE);
> -
> 	if (IS_IIDMA_CAPABLE(vha->hw) && vha->hw->flags.gpsc_supported) {
> 		if (fcport->id_changed) {
> 			fcport->id_changed = 0;
> diff --git a/drivers/scsi/qla2xxx/qla_nvme.c b/drivers/scsi/qla2xxx/qla_nvme.c
> index 718c761ff5f8..5723082d94d6 100644
> --- a/drivers/scsi/qla2xxx/qla_nvme.c
> +++ b/drivers/scsi/qla2xxx/qla_nvme.c
> @@ -37,6 +37,11 @@ int qla_nvme_register_remote(struct scsi_qla_host *vha, struct fc_port *fcport)
> 		(fcport->nvme_flag & NVME_FLAG_REGISTERED))
> 		return 0;
> 
> +	if (atomic_read(&fcport->state) == FCS_ONLINE)
> +		return 0;
> +
> +	qla2x00_set_fcport_state(fcport, FCS_ONLINE);
> +
> 	fcport->nvme_flag &= ~NVME_FLAG_RESETTING;
> 
> 	memset(&req, 0, sizeof(struct nvme_fc_port_info));
> -- 
> 2.19.0.rc0
> 

Patch itself looks good. After fixing commit message you can add 

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