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 <[email protected]> wrote: > On Wed, Aug 31, 2011 at 10:27 PM, Aastha Mehta <[email protected]> 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 [email protected]. > To unsubscribe from this group, send email to > [email protected]. > 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: [email protected] -- You received this message because you are subscribed to the Google Groups "open-iscsi" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. 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 <[email protected]> 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
