Message ID | 1603370091-9337-3-git-send-email-muneendra.kumar@broadcom.com |
---|---|
State | Superseded |
Headers | show |
Series | scsi: Support to handle Intermittent errors | expand |
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@broadcom.com> > > --- > 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 */ > > /*
Hi Ewan, Thanks for the input . I will add this change. Regards, Muneendra. -----Original Message----- From: Ewan D. Milne [mailto:emilne@redhat.com] Sent: Monday, October 26, 2020 5:16 PM To: Muneendra <muneendra.kumar@broadcom.com>; linux-scsi@vger.kernel.org; michael.christie@oracle.com; hare@suse.de Cc: jsmart2021@gmail.com; mkumar@redhat.com Subject: Re: [patch v4 2/5] scsi: Added a new error code in scsi.h 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@broadcom.com> > > --- > 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 */ > > /*
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 */ /*
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@broadcom.com> --- 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(+)