+++ /dev/null
-Subject: scsi_error: TASK ABORTED status handling improvement
-From: Vladislav Bolkhovitin <vst@vlnb.net>
-Date: Fri Nov 7 11:21:03 2008 -0600:
-Git: ab2d67aa39bc63a60fba748b27cf4d962d0dc7f8
-
-This patch improves handling of TASK ABORTED status by Linux SCSI
-mid-layer. Currently, command returned with this status considered
-failed and returned to upper layers. It leads to additional error
-recovery load on file systems and block layer, which sometimes can
-cause undesired side effects, like I/O errors and file systems
-corruptions. See http://lkml.org/lkml/2008/11/1/38, for instance.
-
-From other side, TASK ABORTED status is returned by SCSI target if the
-corresponding command was aborted by another initiator and the target
-has TAS bit set in the control mode page. So, in the majority of cases
-commands with TASK ABORTED status should be simply retried. In other
-cases, maybe_retry path will not retry if no retries are allowed.
-
-This patch implement suggestion by James Bottomley from
-http://marc.info/?l=linux-scsi&m=121932916906009&w=2.
-
-Signed-off-by: Vladislav Bolkhovitin <vst@vlnb.net>
-Signed-off-by: James Bottomley <James.Bottomley@HansenPartnership.com>
-Signed-off-by: Hannes Reinecke <hare@suse.de>
-
----
- drivers/scsi/scsi_error.c | 3 ++-
- 1 file changed, 2 insertions(+), 1 deletion(-)
-
---- a/drivers/scsi/scsi_error.c
-+++ b/drivers/scsi/scsi_error.c
-@@ -1486,8 +1486,9 @@ int scsi_decide_disposition(struct scsi_
- return ADD_TO_MLQUEUE;
- case GOOD:
- case COMMAND_TERMINATED:
-- case TASK_ABORTED:
- return SUCCESS;
-+ case TASK_ABORTED:
-+ goto maybe_retry;
- case CHECK_CONDITION:
- rtn = scsi_check_sense(scmd);
- if (rtn == NEEDS_RETRY)