Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit de7fe08b authored by Quinn Tran's avatar Quinn Tran Committed by Greg Kroah-Hartman
Browse files

scsi: qla2xxx: Fix device staying in blocked state



commit 2137490f2147a8d0799b72b9a1023efb012d40c7 upstream.

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: 41dc529a ("qla2xxx: Improve RSCN handling in driver")
Signed-off-by: default avatarQuinn Tran <qtran@marvell.com>
Cc: stable@vger.kernel.org #4.19
Signed-off-by: default avatarHimanshu Madhani <hmadhani@marvell.com>
Reviewed-by: default avatarEwan D. Milne <emilne@redhat.com>
Signed-off-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent ef7014d7
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -981,6 +981,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;

@@ -1161,8 +1163,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;