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.
drivers/scsi/scsi_error.c +3 -1
@@ -2016,8 +2016,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 ; + } }/*
Martin K. Petersen
Reviewed-byQuoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
"Christoph" == Christoph Hellwig <[email protected]> writes:
Christoph> Setups that use the blk-mq I/O path can lock up if a host Christoph> with a single device that has its door locked enters EH. Christoph> Make sure to only send the command to re-lock the door to Christoph> devices that actually were reset and thus might have lost Christoph> their state. Otherwise the EH code might be get blocked on Christoph> blk_get_request as all requests for non-reset devices might Christoph> be in use.
Signature · 1 line
Martin K. Petersen Oracle Linux Engineering