summaryrefslogtreecommitdiff
path: root/usr/kern_err_table.c
diff options
context:
space:
mode:
authorMike Christie <michaelc@cs.wisc.edu>2011-10-06 04:14:45 -0500
committerMike Christie <michaelc@cs.wisc.edu>2011-10-06 04:14:45 -0500
commitca6328cfaf44e7f6a525906677bfbf513a756b2e (patch)
treecec65c013f746ed8d0d99cf5f3820fbfb08dab2a /usr/kern_err_table.c
parent5383b4b373bdea6cc50b2099201dde33de80d145 (diff)
downloadopen-iscsi-ca6328cfaf44e7f6a525906677bfbf513a756b2e.tar.gz
iscsid: print out more informative error string for kernel errors
Patch originally from Aastha Mehta. This has iscsid print out a text string that should hopefully be more clear than just the iscsi error value we have been printing when we get a error from the kernel.
Diffstat (limited to 'usr/kern_err_table.c')
-rw-r--r--usr/kern_err_table.c83
1 files changed, 83 insertions, 0 deletions
diff --git a/usr/kern_err_table.c b/usr/kern_err_table.c
new file mode 100644
index 0000000..a6ea8fb
--- /dev/null
+++ b/usr/kern_err_table.c
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2011 Aastha Mehta
+ * Copyright (C) 2011 Mike Christie
+ *
+ * maintained by open-iscsi@googlegroups.com
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published
+ * by the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * See the file COPYING included with this distribution for more details.
+ */
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "iscsi_if.h"
+
+#include "kern_err_table.h"
+
+const char *kern_err_code_to_string(int err)
+{
+ switch (err){
+ case ISCSI_OK:
+ return "ISCSI_OK: operation successful";
+ case ISCSI_ERR_DATASN:
+ return "ISCSI_ERR_DATASN: Received invalid data sequence "
+ "number from target";
+ case ISCSI_ERR_DATA_OFFSET:
+ return "ISCSI_ERR_DATA_OFFSET: Seeking offset beyond the size "
+ "of the iSCSI segment";
+ case ISCSI_ERR_MAX_CMDSN:
+ return "ISCSI_ERR_MAX_CMDSN: Received invalid command sequence "
+ "number from target";
+ case ISCSI_ERR_EXP_CMDSN:
+ return "ISCSI_ERR_EXP_CMDSN: Received invalid expected command " "sequence number from target";
+ case ISCSI_ERR_BAD_OPCODE:
+ return "ISCSI_ERR_BAD_OPCODE: Received an invalid iSCSI opcode";
+ case ISCSI_ERR_DATALEN:
+ return "ISCSI_ERR_DATALEN: Invalid data length value";
+ case ISCSI_ERR_AHSLEN:
+ return "ISCSI_ERR_AHSLEN: Received an invalid AHS length";
+ case ISCSI_ERR_PROTO:
+ return "ISCSI_ERR_PROTO: iSCSI protocol violation";
+ case ISCSI_ERR_LUN:
+ return "ISCSI_ERR_LUN: LUN mismatch";
+ case ISCSI_ERR_BAD_ITT:
+ return "ISCSI_ERR_BAD_ITT: Received invalid initiator task tag " "from target";
+ case ISCSI_ERR_CONN_FAILED:
+ return "ISCSI_ERR_CONN_FAILED: iSCSI connection failed";
+ case ISCSI_ERR_R2TSN:
+ return "ISCSI_ERR_R2TSN: Received invalid R2T (Ready to "
+ "Transfer) data sequence number from target";
+ case ISCSI_ERR_SESSION_FAILED:
+ return "ISCSI_ERR_SESSION_FAILED: iSCSI session failed";
+ case ISCSI_ERR_HDR_DGST:
+ return "ISCSI_ERR_HDR_DGST: Header digest mismatch";
+ case ISCSI_ERR_DATA_DGST:
+ return "ISCSI_ERR_DATA_DGST: Data digest mismatch";
+ case ISCSI_ERR_PARAM_NOT_FOUND:
+ return "ISCSI_ERR_PARAM_NOT_FOUND: Parameter not found";
+ case ISCSI_ERR_NO_SCSI_CMD:
+ return "ISCSI_ERR_NO_SCSI_CMD: Could not look up SCSI command";
+ case ISCSI_ERR_INVALID_HOST:
+ return "ISCSI_ERR_INVALID_HOST: iSCSI host is in an invalid "
+ "state";
+ case ISCSI_ERR_XMIT_FAILED:
+ return "ISCSI_ERR_XMIT_FAILED: Transmission of iSCSI packet "
+ "failed";
+ case ISCSI_ERR_TCP_CONN_CLOSE:
+ return "ISCSI_ERR_TCP_CONN_CLOSE: TCP connection closed";
+ case ISCSI_ERR_SCSI_EH_SESSION_RST:
+ return "ISCSI_ERR_SCSI_EH_SESSION_RST: Session was dropped as "
+ "a result of SCSI error recovery";
+ default:
+ return "Invalid or unknown error code";
+ }
+}