--- linux/drivers/scsi/scsi_error.c 2005-02-13 20:46:31.000000000 +1000 +++ linux/drivers/scsi/scsi_error.c2611rc4he 2005-02-17 14:55:44.000000000 +1000 @@ -279,6 +279,7 @@ static int scsi_check_sense(struct scsi_cmnd *scmd) { struct scsi_sense_hdr sshdr; + u64 info; if (! scsi_command_normalize_sense(scmd, &sshdr)) return FAILED; /* no valid sense data */ @@ -348,12 +349,15 @@ return SUCCESS; case MEDIUM_ERROR: - return NEEDS_RETRY; - + case HARDWARE_ERROR: + if (scsi_get_sense_info_fld(scmd->sense_buffer, + sizeof(scmd->sense_buffer), &info)) + return NEEDS_RETRY; + else + return SUCCESS; case ILLEGAL_REQUEST: case BLANK_CHECK: case DATA_PROTECT: - case HARDWARE_ERROR: default: return SUCCESS; }