Don't you need to add the DID_TRANSPORT_MARGINAL case to scsi_decide_disposition() ? DID_TRANSPORT_FAILFAST returns SUCCESS but the default case returns ERROR. -Ewan On Thu, 2020-10-22 at 18:04 +0530, Muneendra wrote: > Added a new error code DID_TRANSPORT_MARGINAL to handle marginal > errors in scsi.h > > Clearing the SCMD_NORETRIES_ABORT bit in state flag before > blk_mq_start_request > > Signed-off-by: Muneendra <muneendra.kumar@xxxxxxxxxxxx> > > --- > v4: > No change > > v3: > Rearranged the patch by merging second hunk of the previous(v2) > patch3 to this patch > > v2: > Newpatch > --- > drivers/scsi/scsi_lib.c | 1 + > include/scsi/scsi.h | 1 + > 2 files changed, 2 insertions(+) > > diff --git a/drivers/scsi/scsi_lib.c b/drivers/scsi/scsi_lib.c > index 1a2e9bab42ef..2b5dea07498e 100644 > --- a/drivers/scsi/scsi_lib.c > +++ b/drivers/scsi/scsi_lib.c > @@ -1660,6 +1660,7 @@ static blk_status_t scsi_queue_rq(struct > blk_mq_hw_ctx *hctx, > req->rq_flags |= RQF_DONTPREP; > } else { > clear_bit(SCMD_STATE_COMPLETE, &cmd->state); > + clear_bit(SCMD_NORETRIES_ABORT, &cmd->state); > } > > cmd->flags &= SCMD_PRESERVED_FLAGS; > diff --git a/include/scsi/scsi.h b/include/scsi/scsi.h > index 5339baadc082..5b287ad8b727 100644 > --- a/include/scsi/scsi.h > +++ b/include/scsi/scsi.h > @@ -159,6 +159,7 @@ static inline int scsi_is_wlun(u64 lun) > * paths might yield different results > */ > #define DID_ALLOC_FAILURE 0x12 /* Space allocation on the device > failed */ > #define DID_MEDIUM_ERROR 0x13 /* Medium error */ > +#define DID_TRANSPORT_MARGINAL 0x14 /* Transport marginal errors */ > #define DRIVER_OK 0x00 /* Driver > status */ > > /*