Hi Saurav On Tue, Dec 01, 2020 at 09:39:05AM +0000, Saurav Kashyap wrote: > > > --- a/drivers/scsi/qla2xxx/qla_nvme.c > > > +++ b/drivers/scsi/qla2xxx/qla_nvme.c > > > @@ -554,19 +554,15 @@ static int qla_nvme_post_cmd(struct > > nvme_fc_local_port *lport, > > > > > > fcport = qla_rport->fcport; > > > > > > - if (!qpair || !fcport) > > > - return -ENODEV; > > > - > > > - if (!qpair->fw_started || fcport->deleted) > > > + if (unlikely(!qpair || !fcport || fcport->deleted)) > > > return -EBUSY; > > > > This reverts the fix from patch #1 in this series. What's the reasoning > > that needs to return EBUSY when !qpair || !fcport is true? > > Ideally driver should not hit (!qpair || !fcport) case. The patch was > to remove fw_started flag and consolidate other checks. Looking again on the patch I think I got confused. > We want IO to retry until remote port is deleted and below condition is hit. The result of this patch is that in EBUSY will be returned in all the cases, not just for the case of fcport->deleted. So all is good from my point of view. Thanks for explaining. Sorry for the noise. Thanks, Daniel