summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuben Tuikov <ltuikov@yahoo.com>2006-11-30 03:45:23 (GMT)
committerJames Bottomley <jejb@mulgrave.il.steeleye.com>2007-01-31 18:18:52 (GMT)
commitfd1b494d4a8147da4517fef72d15116bbb1a2dc7 (patch)
tree73f28f312550a90b062efc63635d0f76afbd33e5
parent7b3b92116387fbea7b3b42553180984a544206d9 (diff)
downloadlinux-fd1b494d4a8147da4517fef72d15116bbb1a2dc7.tar.xz
[SCSI] Fix sense key MEDIUM ERROR processing and retry
1) If the device reports an uncorrectable MEDIUM ERROR, such as SK MEDIUM ERROR, ASC UNRECOVERED READ ERR, AMNF DATA FIELD or RECORD NOT FOUND, then: In scsi_check_sense() return SUCCESS so as to not retry -- the error is uncorrectable -- this speeds up total processing time. Signed-off-by: Luben Tuikov <ltuikov@yahoo.com> Extracted the MEDIUM ERROR piece and Signed-off-by: James Bottomley <James.Bottomley@SteelEye.com>
-rw-r--r--drivers/scsi/scsi_error.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/scsi/scsi_error.c b/drivers/scsi/scsi_error.c
index 8e5011d..2dce06a 100644
--- a/drivers/scsi/scsi_error.c
+++ b/drivers/scsi/scsi_error.c
@@ -359,6 +359,11 @@ static int scsi_check_sense(struct scsi_cmnd *scmd)
return SUCCESS;
case MEDIUM_ERROR:
+ if (sshdr.asc == 0x11 || /* UNRECOVERED READ ERR */
+ sshdr.asc == 0x13 || /* AMNF DATA FIELD */
+ sshdr.asc == 0x14) { /* RECORD NOT FOUND */
+ return SUCCESS;
+ }
return NEEDS_RETRY;
case HARDWARE_ERROR: