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

Commit 48379270 authored by Christoph Hellwig's avatar Christoph Hellwig
Browse files

scsi: only re-lock door after EH on devices that were reset



Setups that use the blk-mq I/O path can lock up if a host with a single
device that has its door locked enters EH.  Make sure to only send the
command to re-lock the door to devices that actually were reset and thus
might have lost their state.  Otherwise the EH code might be get blocked
on blk_get_request as all requests for non-reset devices might be in use.

Cc: stable@vger.kernel.org
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Reported-by: default avatarMeelis Roos <meelis.roos@ut.ee>
Tested-by: default avatarMeelis Roos <meelis.roos@ut.ee>
Reviewed-by: default avatarMartin K. Petersen <martin.petersen@oracle.com>
parent 206c5f60
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -2001,8 +2001,10 @@ static void scsi_restart_operations(struct Scsi_Host *shost)
	 * is no point trying to lock the door of an off-line device.
	 */
	shost_for_each_device(sdev, shost) {
		if (scsi_device_online(sdev) && sdev->locked)
		if (scsi_device_online(sdev) && sdev->was_reset && sdev->locked) {
			scsi_eh_lock_door(sdev);
			sdev->was_reset = 0;
		}
	}

	/*