On Tue, 2019-04-23 at 14:52 -0700, Himanshu Madhani wrote: > From: Quinn Tran <qtran@xxxxxxxxxxx> > > This patch fixes issue reported by some of the customers, > who discovered that after cable pull scenario the devices > disappear and path seems to remain in blocked state. Once > the device reappears, driver does not seem to update path > to online. This issue appears because of the defer flag > creating race condition where the same session reappears. > This patch fixes this issue by indicating SCSI-ML of device > lost when qlt_free_session_done() is called from qlt_unreg_sess(). > > Fixes: 41dc529a4602a ("qla2xxx: Improve RSCN handling in driver") > Signed-off-by: Quinn Tran <qtran@xxxxxxxxxxx> > Cc: stable@xxxxxxxxxxxxxxx #4.19 > Signed-off-by: Himanshu Madhani <hmadhani@xxxxxxxxxxx> > --- > drivers/scsi/qla2xxx/qla_target.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/drivers/scsi/qla2xxx/qla_target.c b/drivers/scsi/qla2xxx/qla_target.c > index 57cdd762230d..fc8914dd9dde 100644 > --- a/drivers/scsi/qla2xxx/qla_target.c > +++ b/drivers/scsi/qla2xxx/qla_target.c > @@ -982,6 +982,8 @@ void qlt_free_session_done(struct work_struct *work) > sess->send_els_logo); > > if (!IS_SW_RESV_ADDR(sess->d_id)) { > + qla2x00_mark_device_lost(vha, sess, 0, 0); > + > if (sess->send_els_logo) { > qlt_port_logo_t logo; > > @@ -1163,8 +1165,6 @@ void qlt_unreg_sess(struct fc_port *sess) > if (sess->se_sess) > vha->hw->tgt.tgt_ops->clear_nacl_from_fcport_map(sess); > > - qla2x00_mark_device_lost(vha, sess, 0, 0); > - > sess->deleted = QLA_SESS_DELETION_IN_PROGRESS; > sess->disc_state = DSC_DELETE_PEND; > sess->last_rscn_gen = sess->rscn_gen; Reviewed-by: Ewan D. Milne <emilne@xxxxxxxxxx>