Skip to content
Snippets Groups Projects
Commit b0b2c5dd authored by dpgilbert's avatar dpgilbert
Browse files

provision for aborted command sense key (occurs in SAS)

git-svn-id: https://smartmontools.svn.sourceforge.net/svnroot/smartmontools/trunk@2384 4ea69e1a-61f1-4043-bf83-b5c94c648137
parent 28ca8059
Branches
No related tags found
No related merge requests found
...@@ -47,7 +47,7 @@ ...@@ -47,7 +47,7 @@
#include "scsicmds.h" #include "scsicmds.h"
#include "utility.h" #include "utility.h"
const char *scsicmds_c_cvsid="$Id: scsicmds.cpp,v 1.93 2007/03/22 12:06:15 dpgilbert Exp $" const char *scsicmds_c_cvsid="$Id: scsicmds.cpp,v 1.94 2007/03/23 03:47:28 dpgilbert Exp $"
CONFIG_H_CVSID EXTERN_H_CVSID INT64_H_CVSID SCSICMDS_H_CVSID UTILITY_H_CVSID; CONFIG_H_CVSID EXTERN_H_CVSID INT64_H_CVSID SCSICMDS_H_CVSID UTILITY_H_CVSID;
/* for passing global control variables */ /* for passing global control variables */
...@@ -116,8 +116,8 @@ static struct scsi_opcode_name opcode_name_arr[] = { ...@@ -116,8 +116,8 @@ static struct scsi_opcode_name opcode_name_arr[] = {
{TEST_UNIT_READY, "test unit ready"}, /* 0x00 */ {TEST_UNIT_READY, "test unit ready"}, /* 0x00 */
{REQUEST_SENSE, "request sense"}, /* 0x03 */ {REQUEST_SENSE, "request sense"}, /* 0x03 */
{INQUIRY, "inquiry"}, /* 0x12 */ {INQUIRY, "inquiry"}, /* 0x12 */
{MODE_SELECT, "mode select"}, /* 0x15 */ {MODE_SELECT, "mode select(6)"}, /* 0x15 */
{MODE_SENSE, "mode sense"}, /* 0x1a */ {MODE_SENSE, "mode sense(6)"}, /* 0x1a */
{RECEIVE_DIAGNOSTIC, "receive diagnostic"}, /* 0x1c */ {RECEIVE_DIAGNOSTIC, "receive diagnostic"}, /* 0x1c */
{SEND_DIAGNOSTIC, "send diagnostic"}, /* 0x1d */ {SEND_DIAGNOSTIC, "send diagnostic"}, /* 0x1d */
{READ_DEFECT_10, "read defect list(10)"}, /* 0x37 */ {READ_DEFECT_10, "read defect list(10)"}, /* 0x37 */
...@@ -171,6 +171,9 @@ void scsi_do_sense_disect(const struct scsi_cmnd_io * io_buf, ...@@ -171,6 +171,9 @@ void scsi_do_sense_disect(const struct scsi_cmnd_io * io_buf,
int scsiSimpleSenseFilter(const struct scsi_sense_disect * sinfo) int scsiSimpleSenseFilter(const struct scsi_sense_disect * sinfo)
{ {
switch (sinfo->sense_key) { switch (sinfo->sense_key) {
case SCSI_SK_NO_SENSE:
case SCSI_SK_RECOVERED_ERR:
return SIMPLE_NO_ERROR;
case SCSI_SK_NOT_READY: case SCSI_SK_NOT_READY:
if (SCSI_ASC_NO_MEDIUM == sinfo->asc) if (SCSI_ASC_NO_MEDIUM == sinfo->asc)
return SIMPLE_ERR_NO_MEDIUM; return SIMPLE_ERR_NO_MEDIUM;
...@@ -195,8 +198,10 @@ int scsiSimpleSenseFilter(const struct scsi_sense_disect * sinfo) ...@@ -195,8 +198,10 @@ int scsiSimpleSenseFilter(const struct scsi_sense_disect * sinfo)
return SIMPLE_ERR_BAD_PARAM; /* all other illegal request */ return SIMPLE_ERR_BAD_PARAM; /* all other illegal request */
case SCSI_SK_UNIT_ATTENTION: case SCSI_SK_UNIT_ATTENTION:
return SIMPLE_ERR_TRY_AGAIN; return SIMPLE_ERR_TRY_AGAIN;
case SCSI_SK_ABORTED_COMMAND:
return SIMPLE_ERR_ABORTED_COMMAND;
default: default:
return SIMPLE_NO_ERROR; return SIMPLE_ERR_UNKNOWN;
} }
} }
...@@ -225,6 +230,10 @@ const char * scsiErrString(int scsiErr) ...@@ -225,6 +230,10 @@ const char * scsiErrString(int scsiErr)
return "unit attention reported, try again"; return "unit attention reported, try again";
case SIMPLE_ERR_MEDIUM_HARDWARE: case SIMPLE_ERR_MEDIUM_HARDWARE:
return "medium or hardware error (serious)"; return "medium or hardware error (serious)";
case SIMPLE_ERR_UNKNOWN:
return "unknown error (unexpected sense key)";
case SIMPLE_ERR_ABORTED_COMMAND:
return "aborted command (transport problem?)";
default: default:
return "unknown error"; return "unknown error";
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment