replace "unhandled error code" message in scsi_io_completion default
host-byte condition with a descriptive message of what the host-byte
indicates. The descriptive messages for the host bytes were derived
from the corresponding comments for the DID_HOST_ definitions in scsi.h.
Also softened the corresponding default sense code message.
Signed-off-by: Rob Evers<revers@xxxxxxxxxx>
---
drivers/scsi/constants.c | 45 ++++++++++++++++++++++++++++++++++++++++++++-
drivers/scsi/scsi_lib.c | 4 ++--
include/scsi/scsi_dbg.h | 1 +
3 files changed, 47 insertions(+), 3 deletions(-)
diff --git a/drivers/scsi/constants.c b/drivers/scsi/constants.c
index 450e011..900333c 100644
--- a/drivers/scsi/constants.c
+++ b/drivers/scsi/constants.c
@@ -1422,9 +1422,52 @@ static const char * const hostbyte_table[]={
"DID_OK", "DID_NO_CONNECT", "DID_BUS_BUSY", "DID_TIME_OUT", "DID_BAD_TARGET",
"DID_ABORT", "DID_PARITY", "DID_ERROR", "DID_RESET", "DID_BAD_INTR",
"DID_PASSTHROUGH", "DID_SOFT_ERROR", "DID_IMM_RETRY", "DID_REQUEUE",
-"DID_TRANSPORT_DISRUPTED", "DID_TRANSPORT_FAILFAST" };
+"DID_TRANSPORT_DISRUPTED", "DID_TRANSPORT_FAILFAST", "DID_TARGET_FAILURE",
+"DID_NEXUS_FAILURE" };
#define NUM_HOSTBYTE_STRS ARRAY_SIZE(hostbyte_table)
+/*
+ * derived from comments following 'Host byte codes' in scsi.h
+ */
+static char *hostbyte_table_ext_msg[] = {
+ "No Error",
+ "Couldn't connect before timeout period",
+ "Bus stayed busy through timeout period",
+ "Timed out for other reason",
+ "Bad target",
+ "Abort for some other reason",
+ "Parity Error",
+ "Internal Error",
+ "Reset",
+ "Interrupt that is not expected",
+ "Force command past mid-layer",
+ "Low level driver requests a retry",
+ "Retry immediately, don't decrement retry count",
+ "Requeue command, not immediate, don't decrement retry count",
+ "Transport disrupted, driver blocked port to recover link, transport class will retry or fail the IO",
+ "Transport class fastfailed the IO",
+ "Permanent target failure, don't retry other paths",
+ "Permanent nexus failure, retry on other paths may yield different results"
+};
+#define NUM_HOSTBYTE_EXT_MSG_STRS ARRAY_SIZE(hostbyte_table_ext_msg)
+
+#endif
+
+char *
+scsi_ext_host_byte_msg(unsigned char index)
+{
+#ifdef CONFIG_SCSI_CONSTANTS
+ if (index< NUM_HOSTBYTE_EXT_MSG_STRS)
+ return hostbyte_table_ext_msg[index];
+ else
+ return NULL;