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.

Reply via email to