* [PATCH 0/2] scsi: sense retry
@ 2008-08-12 19:11 Mike Anderson
2008-08-12 19:11 ` [PATCH 1/2] scsi: scsi_dh check_sense return ADD_TO_MLQUEUE Mike Anderson
2008-08-12 19:11 ` [PATCH 2/2] scsi: scsi_check_sense HARDWARE_ERROR " Mike Anderson
0 siblings, 2 replies; 6+ messages in thread
From: Mike Anderson @ 2008-08-12 19:11 UTC (permalink / raw)
To: linux-scsi; +Cc: Chandra Seetharaman, Hannes Reinecke
This patch series effects the retry behavior of IO when blk_noretry_request is used.
The patches effect the retries in two areas. The first is that it allows
the scsi_dh check_sense routines to have more control of the retry of a
IO. Currently if the scsi_dh check_sense functions return NEEDS_RETRY
this will not lead to a retry in the DM-MP configurations where they are
most likely to be used because the blk_noretry_request will be true for
these IOs which will prevent the retry. The second change in behavior of
the HARDWARE_ERROR sense key is to avoid path failures of all DM-MP paths
for the IBM device(s) returning this sense key. The utilization of
ADD_TO_MLQUEUE for the HARDWARE_ERROR sense key could lead to longer retry
times for the other user of BLIST_RETRY_HWERROR.
I have tried to summarize the scsi_decide_disposition current retry behavior
below.
1.) Based on host_byte
The host bytes listed below will return ADD_TO_MLQUEUE or NEEDS_RETRY
which is always retried up to the max scsi mid-layer in-flight time
(unsigned long wait_for = (cmd->allowed + 1) * cmd->timeout_per_command;).
DID_REQUEUE:
(returns ADD_TO_MLQUEUE)
DID_IMM_RETRY:
(returns NEEDS_RETRY)
The host bytes listed below will use the maybe_retry goto which will
not be retried if blk_noretry_request is true.
DID_ERROR:
DID_SOFT_ERROR:
DID_BUS_BUSY:
DID_PARITY:
2.) Based on status_byte
The status bytes listed below will return ADD_TO_MLQUEUE which is
always retried up to the max scsi mid-layer in-flight time (unsigned
long wait_for = (cmd->allowed + 1) * cmd->timeout_per_command;).
BUSY:
QUEUE_FULL:
3.) Based on sense_key
The sense keys and sense checks listed below will return NEEDS_RETRY
which will be not be retried if blk_noretry_request is true.
Note1: There is some if checks removed to simplify the list. Please see
code for more detailed behavior.
Note2: All scsi_dh sense_check functions will be effected by the
blk_noretry_request check.
scsi_sense_is_deferred
ABORTED_COMMAND:
NOT_READY:
UNIT_ATTENTION:
MEDIUM_ERROR:
HARDWARE_ERROR:
I have summarized the change in retry behavior below.
1.) Based on sense_key
The current scsi_dh sense_check functions will return
ADD_TO_MLQUEUE.
HARDWARE_ERROR will return ADD_TO_MLQUEUE if retry_hwerror is set.
-andmike
--
Michael Anderson
andmike@linux.vnet.ibm.com
^ permalink raw reply [flat|nested] 6+ messages in thread* [PATCH 1/2] scsi: scsi_dh check_sense return ADD_TO_MLQUEUE 2008-08-12 19:11 [PATCH 0/2] scsi: sense retry Mike Anderson @ 2008-08-12 19:11 ` Mike Anderson 2008-08-25 12:33 ` Hannes Reinecke 2008-08-12 19:11 ` [PATCH 2/2] scsi: scsi_check_sense HARDWARE_ERROR " Mike Anderson 1 sibling, 1 reply; 6+ messages in thread From: Mike Anderson @ 2008-08-12 19:11 UTC (permalink / raw) To: linux-scsi; +Cc: Chandra Seetharaman, Hannes Reinecke Change scsi_dh check_sense functions to return ADD_TO_MLQUEUE to allow retries to occur without restriction of blk_noretry_request check. Signed-off-by: Mike Anderson <andmike@linux.vnet.ibm.com> --- drivers/scsi/device_handler/scsi_dh_alua.c | 12 ++++++------ drivers/scsi/device_handler/scsi_dh_emc.c | 4 ++-- drivers/scsi/device_handler/scsi_dh_rdac.c | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/drivers/scsi/device_handler/scsi_dh_alua.c b/drivers/scsi/device_handler/scsi_dh_alua.c index fcdd73f..2eb9edd 100644 --- a/drivers/scsi/device_handler/scsi_dh_alua.c +++ b/drivers/scsi/device_handler/scsi_dh_alua.c @@ -425,7 +425,7 @@ static int alua_check_sense(struct scsi_device *sdev, /* * LUN Not Accessible - ALUA state transition */ - return NEEDS_RETRY; + return ADD_TO_MLQUEUE; if (sense_hdr->asc == 0x04 && sense_hdr->ascq == 0x0b) /* * LUN Not Accessible -- Target port in standby state @@ -447,18 +447,18 @@ static int alua_check_sense(struct scsi_device *sdev, /* * Power On, Reset, or Bus Device Reset, just retry. */ - return NEEDS_RETRY; + return ADD_TO_MLQUEUE; if (sense_hdr->asc == 0x2a && sense_hdr->ascq == 0x06) { /* * ALUA state changed */ - return NEEDS_RETRY; + return ADD_TO_MLQUEUE; } if (sense_hdr->asc == 0x2a && sense_hdr->ascq == 0x07) { /* * Implicit ALUA state transition failed */ - return NEEDS_RETRY; + return ADD_TO_MLQUEUE; } break; } @@ -490,7 +490,7 @@ static int alua_stpg(struct scsi_device *sdev, int state, if (!err) return SCSI_DH_IO; err = alua_check_sense(sdev, &sense_hdr); - if (retry > 0 && err == NEEDS_RETRY) { + if (retry > 0 && err == ADD_TO_MLQUEUE) { retry--; goto retry; } @@ -535,7 +535,7 @@ static int alua_rtpg(struct scsi_device *sdev, struct alua_dh_data *h) return SCSI_DH_IO; err = alua_check_sense(sdev, &sense_hdr); - if (err == NEEDS_RETRY) + if (err == ADD_TO_MLQUEUE) goto retry; sdev_printk(KERN_INFO, sdev, "%s: rtpg sense code %02x/%02x/%02x\n", diff --git a/drivers/scsi/device_handler/scsi_dh_emc.c b/drivers/scsi/device_handler/scsi_dh_emc.c index aa46b13..7796d65 100644 --- a/drivers/scsi/device_handler/scsi_dh_emc.c +++ b/drivers/scsi/device_handler/scsi_dh_emc.c @@ -439,7 +439,7 @@ static int clariion_check_sense(struct scsi_device *sdev, * Unit Attention Code. This is the first IO * to the new path, so just retry. */ - return NEEDS_RETRY; + return ADD_TO_MLQUEUE; break; } @@ -514,7 +514,7 @@ retry: return SCSI_DH_IO; err = clariion_check_sense(sdev, &sshdr); - if (retry > 0 && err == NEEDS_RETRY) { + if (retry > 0 && err == ADD_TO_MLQUEUE) { retry--; goto retry; } diff --git a/drivers/scsi/device_handler/scsi_dh_rdac.c b/drivers/scsi/device_handler/scsi_dh_rdac.c index b093a50..f5ff950 100644 --- a/drivers/scsi/device_handler/scsi_dh_rdac.c +++ b/drivers/scsi/device_handler/scsi_dh_rdac.c @@ -550,7 +550,7 @@ static int rdac_check_sense(struct scsi_device *sdev, * * Just retry and wait. */ - return NEEDS_RETRY; + return ADD_TO_MLQUEUE; break; case ILLEGAL_REQUEST: if (sense_hdr->asc == 0x94 && sense_hdr->ascq == 0x01) { @@ -567,7 +567,7 @@ static int rdac_check_sense(struct scsi_device *sdev, /* * Power On, Reset, or Bus Device Reset, just retry. */ - return NEEDS_RETRY; + return ADD_TO_MLQUEUE; break; } /* success just means we do not care what scsi-ml does */ -- 1.5.5.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] scsi: scsi_dh check_sense return ADD_TO_MLQUEUE 2008-08-12 19:11 ` [PATCH 1/2] scsi: scsi_dh check_sense return ADD_TO_MLQUEUE Mike Anderson @ 2008-08-25 12:33 ` Hannes Reinecke 2008-08-25 20:02 ` Chandra Seetharaman 0 siblings, 1 reply; 6+ messages in thread From: Hannes Reinecke @ 2008-08-25 12:33 UTC (permalink / raw) To: Mike Anderson; +Cc: linux-scsi, Chandra Seetharaman Hi Mike, Mike Anderson wrote: > Change scsi_dh check_sense functions to return ADD_TO_MLQUEUE > to allow retries to occur without restriction of blk_noretry_request > check. > Correct. Error on my side. > Signed-off-by: Mike Anderson <andmike@linux.vnet.ibm.com> Signed-off-by: Hannes Reinecke <hare@suse.de> -- Dr. Hannes Reinecke zSeries & Storage hare@suse.de +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Markus Rex, HRB 16746 (AG Nürnberg) -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH 1/2] scsi: scsi_dh check_sense return ADD_TO_MLQUEUE 2008-08-25 12:33 ` Hannes Reinecke @ 2008-08-25 20:02 ` Chandra Seetharaman 0 siblings, 0 replies; 6+ messages in thread From: Chandra Seetharaman @ 2008-08-25 20:02 UTC (permalink / raw) To: Linux SCSI Mailing list; +Cc: Mike Anderson, Hannes Reinecke On Mon, 2008-08-25 at 14:33 +0200, Hannes Reinecke wrote: > Hi Mike, > > Mike Anderson wrote: > > Change scsi_dh check_sense functions to return ADD_TO_MLQUEUE > > to allow retries to occur without restriction of blk_noretry_request > > check. > > > Correct. Error on my side. > > > Signed-off-by: Mike Anderson <andmike@linux.vnet.ibm.com> > Signed-off-by: Hannes Reinecke <hare@suse.de> Signed-off-by: Chandra Seetharaman <sekharan@us.ibm.com> ^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH 2/2] scsi: scsi_check_sense HARDWARE_ERROR return ADD_TO_MLQUEUE 2008-08-12 19:11 [PATCH 0/2] scsi: sense retry Mike Anderson 2008-08-12 19:11 ` [PATCH 1/2] scsi: scsi_dh check_sense return ADD_TO_MLQUEUE Mike Anderson @ 2008-08-12 19:11 ` Mike Anderson 2008-08-25 12:34 ` Hannes Reinecke 1 sibling, 1 reply; 6+ messages in thread From: Mike Anderson @ 2008-08-12 19:11 UTC (permalink / raw) To: linux-scsi; +Cc: Chandra Seetharaman, Hannes Reinecke Change scsi_check_sense HARDWARE_ERROR check to return ADD_TO_MLQUEUE to allow retries to occur without restriction of blk_noretry_request check. Signed-off-by: Mike Anderson <andmike@linux.vnet.ibm.com> --- drivers/scsi/scsi_error.c | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c index 880051c..39ce3ab 100644 --- a/drivers/scsi/scsi_error.c +++ b/drivers/scsi/scsi_error.c @@ -391,7 +391,7 @@ static int scsi_check_sense(struct scsi_cmnd *scmd) case HARDWARE_ERROR: if (scmd->device->retry_hwerror) - return NEEDS_RETRY; + return ADD_TO_MLQUEUE; else return SUCCESS; -- 1.5.5.1 ^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH 2/2] scsi: scsi_check_sense HARDWARE_ERROR return ADD_TO_MLQUEUE 2008-08-12 19:11 ` [PATCH 2/2] scsi: scsi_check_sense HARDWARE_ERROR " Mike Anderson @ 2008-08-25 12:34 ` Hannes Reinecke 0 siblings, 0 replies; 6+ messages in thread From: Hannes Reinecke @ 2008-08-25 12:34 UTC (permalink / raw) To: Mike Anderson; +Cc: linux-scsi, Chandra Seetharaman Hi Mike, Mike Anderson wrote: > Change scsi_check_sense HARDWARE_ERROR check to return ADD_TO_MLQUEUE > to allow retries to occur without restriction of blk_noretry_request > check. Correct. We always should retry here. > > Signed-off-by: Mike Anderson <andmike@linux.vnet.ibm.com> Signed-off-by: Hannes Reinecke <hare@suse.de> Cheers, Hannes -- Dr. Hannes Reinecke zSeries & Storage hare@suse.de +49 911 74053 688 SUSE LINUX Products GmbH, Maxfeldstr. 5, 90409 Nürnberg GF: Markus Rex, HRB 16746 (AG Nürnberg) -- To unsubscribe from this list: send the line "unsubscribe linux-scsi" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html ^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2008-08-25 20:03 UTC | newest] Thread overview: 6+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2008-08-12 19:11 [PATCH 0/2] scsi: sense retry Mike Anderson 2008-08-12 19:11 ` [PATCH 1/2] scsi: scsi_dh check_sense return ADD_TO_MLQUEUE Mike Anderson 2008-08-25 12:33 ` Hannes Reinecke 2008-08-25 20:02 ` Chandra Seetharaman 2008-08-12 19:11 ` [PATCH 2/2] scsi: scsi_check_sense HARDWARE_ERROR " Mike Anderson 2008-08-25 12:34 ` Hannes Reinecke
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox