Re: [PATCH v3 1/4] scsi: add expecting_media_change flag to error path
From: Bart Van Assche <bvanassche@acm.org>
Date: 2021-03-28 16:54:18
Also in:
linux-scsi, lkml
From: Bart Van Assche <bvanassche@acm.org>
Date: 2021-03-28 16:54:18
Also in:
linux-scsi, lkml
On 3/28/21 3:25 AM, Martin Kepplinger wrote:
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index 08c06c56331c..c62915d34ba4 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c@@ -585,6 +585,18 @@ int scsi_check_sense(struct scsi_cmnd *scmd) return NEEDS_RETRY; } } + if (scmd->device->expecting_media_change) { + if (sshdr.asc == 0x28 && sshdr.ascq == 0x00) { + /* + * clear the expecting_media_change in + * scsi_decide_disposition() because we + * need to catch possible "fail fast" overrides + * that block readahead can cause. + */ + return NEEDS_RETRY; + } + }
Introducing a new state variable carries some risk, namely that a path that should set or clear the state variable is overlooked. Is there an approach that does not require to introduce a new state variable, e.g. to send a REQUEST SENSE command after a resume? Thanks, Bart.