Hi,

Thanks for the feedback. I have included changes mentioned by different
people. Attaching patch again. Please review it once more.

Thanks,
Aastha.


On 2 September 2011 13:27, Ankit Jain <m...@ankitjain.org> wrote:

> On Wed, Aug 31, 2011 at 10:27 PM, Aastha Mehta <aasth...@gmail.com> wrote:
> > Hello,
> >
> > Attached is the patch for the first kernel TODO item in the TODO list
> > circulated earlier. I could not send the patch through git send-email, so
> > have attached it here.
>
> I'm new to the code base. Some comments inline:
>
> >diff --git a/usr/initiator.c b/usr/initiator.c
> >index 0350ff8..a2f412a 100644
> [...]
> >
> >-      log_warning("Kernel reported iSCSI connection %d:%d error (%d) "
> >-                  "state (%d)", session->id, conn->id, error,
> >+      char *err_desc = err_code_to_string(error);
> >+
> >+      log_warning("Kernel reported iSCSI connection %d:%d error (%d) %s"
> >+                  "state (%d)", session->id, conn->id, error, err_desc,
> >                   conn->state);
> >       iscsi_ev_context_put(ev_context);
>
> You probably need a space after the "%s" for err_desc, and also it might be
> nice to quote the error desc, to differentiate it from rest of the message.
> eg:
>
>   log_warning("Kernel reported iSCSI connection %d:%d error (%d) '%s' "
>
> >diff --git a/usr/kern_error_table.c b/usr/kern_error_table.c
> >+
> >+char *err_table[NUM_ERRORS] = {
> >+      "ISCSI_OK: iscsi ok",
> >+      "ISCSI_ERR_DATASN: Got invalid data sequence from iSCSI target",
>
> AFAIU, this error is when we get an unexpected data sequence number.
>
> >+      "ISCSI_ERR_DATALEN: Invalid R2T, unexpected datalen value",
>
> This is not R2T specific, AFAICS.
>
> >+      "ISCSI_ERR_BAD_ITT: Invalid invitation to transmit",
>
> ITT is 'Initiator Task Tag'.
>
> >+
> >+char *err_code_to_string(int code){
> >+      char *err_string;
> >+      switch(code%1000){
> >+              case 0: err_string = err_table[0];
> >+                      break;
>
> Wouldn't this be equivalent ? :
>  err_string = err_table [code % ISCSI_ERR_BASE];
>
> Also, probably check for error code for which the table has no entry
> (eg. a new error code added but the table hasn't been updated) and
> handle it accordingly. Also, I would add a comment in iscsi_if.h,
> suggesting
> that this error table needs to be updated when adding new error codes.
>
> Regards,
> Ankit
>
> --
> You received this message because you are subscribed to the Google Groups
> "open-iscsi" group.
> To post to this group, send email to open-iscsi@googlegroups.com.
> To unsubscribe from this group, send email to
> open-iscsi+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/open-iscsi?hl=en.
>
>


-- 
Aastha Mehta
B.E. (Hons.) Computer Science
BITS Pilani
E-mail: aasth...@gmail.com

-- 
You received this message because you are subscribed to the Google Groups 
"open-iscsi" group.
To post to this group, send email to open-iscsi@googlegroups.com.
To unsubscribe from this group, send email to 
open-iscsi+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/open-iscsi?hl=en.

From 22ca358914d43a489f23b4004c7743a7b28d0ae9 Mon Sep 17 00:00:00 2001
From: Aastha Mehta <aasth...@gmail.com>
Date: Thu, 8 Sep 2011 22:25:44 -0700
Subject: [PATCH 1/1] added code to display verbose messages on session connection errors

---
 usr/Makefile           |    2 +-
 usr/initiator.c        |   10 ++++++++++
 usr/kern_error_table.c |   34 ++++++++++++++++++++++++++++++++++
 usr/kern_error_table.h |    5 +++++
 4 files changed, 50 insertions(+), 1 deletions(-)
 create mode 100644 usr/kern_error_table.c
 create mode 100644 usr/kern_error_table.h

diff --git a/usr/Makefile b/usr/Makefile
index 3ee0cb4..382139a 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_error_table.o
 
 # fw boot files
 FW_BOOT_SRCS = $(wildcard ../utils/fwparam_ibft/*.o)
diff --git a/usr/initiator.c b/usr/initiator.c
index 0350ff8..b306387 100644
--- a/usr/initiator.c
+++ b/usr/initiator.c
@@ -48,6 +48,8 @@
 #include "sysdeps.h"
 #include "iscsi_err.h"
 
+#include "kern_error_table.h"
+
 #define ISCSI_CONN_ERR_REOPEN_DELAY	3
 #define ISCSI_INTERNAL_ERR_REOPEN_DELAY	5
 
@@ -847,9 +849,14 @@ static void session_conn_error(void *data)
 	iscsi_conn_t *conn = ev_context->conn;
 	iscsi_session_t *session = conn->session;
 
+	const char *err_desc = err_code_to_string(error);
+
 	log_warning("Kernel reported iSCSI connection %d:%d error (%d) "
 		    "state (%d)", session->id, conn->id, error,
 		    conn->state);
+
+	log_warning("error %d: %s ", error, err_desc);
+
 	iscsi_ev_context_put(ev_context);
 
 	switch (error) {
@@ -2044,3 +2051,6 @@ void iscsi_initiator_init(void)
 {
 	ipc_register_ev_callback(&ipc_clbk);
 }
+/*
+ * iSCSI Session Management and Slow-path Control
+ *
diff --git a/usr/kern_error_table.c b/usr/kern_error_table.c
new file mode 100644
index 0000000..c18d558
--- /dev/null
+++ b/usr/kern_error_table.c
@@ -0,0 +1,34 @@
+#include<stdio.h>
+#include<stdlib.h>
+#include<string.h>
+#include "iscsi_if.h"
+#include"kern_error_table.h"
+#define NUM_ERRORS 22
+
+const char *err_code_to_string(int code){
+	switch(code % ISCSI_ERR_BASE){
+		case 0:	 return "ISCSI_OK: operation successful";
+		case 1:  return "ISCSI_ERR_DATASN: Received invalid data sequence number from target";
+		case 2:  return "ISCSI_ERR_DATA_OFFSET: Seeking offset beyond the size of the iSCSI segment";
+		case 3:  return "ISCSI_ERR_MAX_CMDSN: Received invalid command sequence number from target";
+		case 4:  return "ISCSI_ERR_EXP_CMDSN: Received invalid expected command sequence number from target";
+		case 5:  return "ISCSI_ERR_BAD_OPCODE: Received an invalid iSCSI opcode";
+		case 6:  return "ISCSI_ERR_DATALEN: Invalid R2T, unexpected datalen value";
+		case 7:  return "ISCSI_ERR_AHSLEN: Received an invalid AHS len";
+		case 8:  return "ISCSI_ERR_PROTO: iSCSI protocol violation";
+		case 9:  return "ISCSI_ERR_LUN: LUN mismatch";
+		case 10: return "ISCSI_ERR_BAD_ITT: Received invalid initiator task tag from target";
+		case 11: return "ISCSI_ERR_CONN_FAILED: iSCSI connection failed";
+		case 12: return "ISCSI_ERR_R2TSN: Received invalid R2T (Ready to Transfer) data sequence number from target";
+		case 13: return "ISCSI_ERR_SESSION_FAILED: iSCSI session failed";
+		case 14: return "ISCSI_ERR_HDR_DGST: Header digest mismatch";
+		case 15: return "ISCSI_ERR_DATA_DGST: Data digest mismatch";
+		case 16: return "ISCSI_ERR_PARAM_NOT_FOUND: Parameter not found";
+		case 17: return "ISCSI_ERR_NO_SCSI_CMD: Could not look up SCSI command";
+		case 18: return "ISCSI_ERR_INVALID_HOST: iSCSI host is in an invalid state";
+		case 19: return "ISCSI_ERR_XMIT_FAILED: Transmission of iSCSI packet failed";
+		case 20: return "ISCSI_ERR_TCP_CONN_CLOSE: TCP connection closed down";
+		case 21: return "ISCSI_ERR_SCSI_EH_SESSION_RST: Session was dropped as a result of SCSI error discovery";
+		default: return "Invalid error code. Is there a new error code added which is not handled?";
+	}
+}
diff --git a/usr/kern_error_table.h b/usr/kern_error_table.h
new file mode 100644
index 0000000..221ac5a
--- /dev/null
+++ b/usr/kern_error_table.h
@@ -0,0 +1,5 @@
+#ifndef __KERN_ERR_TABLE_H__
+#define __KERN_ERR_TABLE_H__
+
+extern const char *err_code_to_string(int);
+#endif
-- 
1.7.4.1

Reply via email to