Message ID | 1601268657-940-5-git-send-email-muneendra.kumar@broadcom.com |
---|---|
State | New |
Headers | show |
Series | scsi: Support to handle Intermittent errors | expand |
On 9/28/20 6:50 AM, Muneendra wrote: > Made an additional check in scsi_noretry_cmd to verify whether user has > decided not to do retries on abort success by setting the > SCMD_NORETRIES_ABORT bit > > If SCMD_NORETRIES_ABORT bit is set we are making sure there won't be any > retries done on the same path and also setting the host byte as > DID_TRANSPORT_MARGINAL so that the error can be propogated as recoverable > transport error to the blk layers. > > Signed-off-by: Muneendra <muneendra.kumar@broadcom.com> > > --- > v2: > set the hostbyte as DID_TRANSPORT_MARGINAL instead of > DID_TRANSPORT_FAILFAST. > --- > drivers/scsi/scsi_error.c | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c > index 5f3726abed78..3f14ea10d5da 100644 > --- a/drivers/scsi/scsi_error.c > +++ b/drivers/scsi/scsi_error.c > @@ -1748,6 +1748,16 @@ int scsi_noretry_cmd(struct scsi_cmnd *scmd) > return 0; > > check_type: > + /* > + * Check whether caller has decided not to do retries on > + * abort success by setting the SCMD_NORETRIES_ABORT bit > + */ > + if ((test_bit(SCMD_NORETRIES_ABORT, &scmd->state)) && > + (scmd->request->cmd_flags & REQ_FAILFAST_TRANSPORT)) { > + set_host_byte(scmd, DID_TRANSPORT_MARGINAL); > + return 1; > + } > + > /* > * assume caller has checked sense and determined > * the check condition was retryable. > As indicated, the first part of the previous patch should be merged with this patch. Cheers, Hannes
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index 5f3726abed78..3f14ea10d5da 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c @@ -1748,6 +1748,16 @@ int scsi_noretry_cmd(struct scsi_cmnd *scmd) return 0; check_type: + /* + * Check whether caller has decided not to do retries on + * abort success by setting the SCMD_NORETRIES_ABORT bit + */ + if ((test_bit(SCMD_NORETRIES_ABORT, &scmd->state)) && + (scmd->request->cmd_flags & REQ_FAILFAST_TRANSPORT)) { + set_host_byte(scmd, DID_TRANSPORT_MARGINAL); + return 1; + } + /* * assume caller has checked sense and determined * the check condition was retryable.
Made an additional check in scsi_noretry_cmd to verify whether user has decided not to do retries on abort success by setting the SCMD_NORETRIES_ABORT bit If SCMD_NORETRIES_ABORT bit is set we are making sure there won't be any retries done on the same path and also setting the host byte as DID_TRANSPORT_MARGINAL so that the error can be propogated as recoverable transport error to the blk layers. Signed-off-by: Muneendra <muneendra.kumar@broadcom.com> --- v2: set the hostbyte as DID_TRANSPORT_MARGINAL instead of DID_TRANSPORT_FAILFAST. --- drivers/scsi/scsi_error.c | 10 ++++++++++ 1 file changed, 10 insertions(+)