[Pkg-iscsi-maintainers] [SCM] Debian Open-iSCSI Packaging branch, upstream-mnc, updated. 2.0-872-193-gde2c0e7

Mike Christie michaelc at cs.wisc.edu
Sat Apr 7 15:43:52 UTC 2012


The following commit has been merged in the upstream-mnc branch:
commit ca6328cfaf44e7f6a525906677bfbf513a756b2e
Author: Mike Christie <michaelc at cs.wisc.edu>
Date:   Thu Oct 6 04:14:45 2011 -0500

    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.

diff --git a/TODO b/TODO
index 06777c4..aea957f 100644
--- a/TODO
+++ b/TODO
@@ -333,23 +333,6 @@ and it would be best to just stop openening a socket per login request.
 
 ---------------------------------------------------------------------------
 
-5. Make iSCSI log messages humanly readable. In many cases the iscsi tools
-will log a error number value. The most well known is conn error 1011.
-Users should not have to search on google for what this means.
-
-We should:
-
-1. Write a simple table to convert the error values to a string and print
-them out.
-
-2. Document the values, how you commonly hit them and common solutions
-in the iSCSI docs.
-
-
-See session_conn_error and __check_iscsi_status_class as a start.
-
----------------------------------------------------------------------------
-
 6. Implement broadcast/multicasts support, so the initiator can
 find iSNS servers without the user having to set the iSNS server address.
 
diff --git a/usr/Makefile b/usr/Makefile
index 3ee0cb4..bc7af2c 100644
--- a/usr/Makefile
+++ b/usr/Makefile
@@ -44,7 +44,7 @@ ISCSI_LIB_SRCS = iscsi_util.o io.o auth.o iscsi_timer.o login.o log.o md5.o \
 	iscsi_net_util.o iscsid_req.o transport.o cxgbi.o be2iscsi.o \
 	initiator_common.o iscsi_err.o $(IPC_OBJ)  $(SYSDEPS_SRCS) $(DCB_OBJ)
 # core initiator files
-INITIATOR_SRCS = initiator.o scsi.o actor.o event_poll.o mgmt_ipc.o
+INITIATOR_SRCS = initiator.o scsi.o actor.o event_poll.o mgmt_ipc.o kern_err_table.o
 
 # fw boot files
 FW_BOOT_SRCS = $(wildcard ../utils/fwparam_ibft/*.o)
diff --git a/usr/initiator.c b/usr/initiator.c
index 6c06318..663c3ee 100644
--- a/usr/initiator.c
+++ b/usr/initiator.c
@@ -47,6 +47,7 @@
 #include "iface.h"
 #include "sysdeps.h"
 #include "iscsi_err.h"
+#include "kern_err_table.h"
 
 #define ISCSI_CONN_ERR_REOPEN_DELAY	3
 #define ISCSI_INTERNAL_ERR_REOPEN_DELAY	5
@@ -847,9 +848,10 @@ static void session_conn_error(void *data)
 	iscsi_conn_t *conn = ev_context->conn;
 	iscsi_session_t *session = conn->session;
 
-	log_warning("Kernel reported iSCSI connection %d:%d error (%d) "
+	log_warning("Kernel reported iSCSI connection %d:%d error (%d - %s) "
 		    "state (%d)", session->id, conn->id, error,
-		    conn->state);
+		    kern_err_code_to_string(error), conn->state);
+
 	iscsi_ev_context_put(ev_context);
 
 	switch (error) {
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 at 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";
+	}
+}
diff --git a/usr/event_poll.h b/usr/kern_err_table.h
similarity index 64%
copy from usr/event_poll.h
copy to usr/kern_err_table.h
index c0eed5c..592e40d 100644
--- a/usr/event_poll.h
+++ b/usr/kern_err_table.h
@@ -1,7 +1,7 @@
 /*
- * iSCSI event poll/loop 
+ * Copyright (C) 2011 Aastha Mehta
+ * Copyright (C) 2011 Mike Christie
  *
- * Copyright (C) 2004 Dmitry Yusupov, Alex Aizman
  * maintained by open-iscsi at googlegroups.com
  *
  * This program is free software; you can redistribute it and/or modify
@@ -16,16 +16,8 @@
  *
  * See the file COPYING included with this distribution for more details.
  */
-#ifndef EVENT_POLL_H
-#define EVENT_POLL_H
-
-struct iscsi_ipc;
-struct queue_task;
-
-int shutdown_callback(pid_t pid);
-void reap_proc(void);
-void reap_inc(void);
-void event_loop(struct iscsi_ipc *ipc, int control_fd, int mgmt_ipc_fd);
-void event_loop_exit(struct queue_task *qtask);
+#ifndef __KERN_ERR_TABLE_H__
+#define __KERN_ERR_TABLE_H__
 
+extern const char *kern_err_code_to_string(int);
 #endif

-- 
Debian Open-iSCSI Packaging



More information about the Pkg-iscsi-maintainers mailing list