Logging for connections and sessions in the scsi_transport_iscsi module
is now controlled by module parameters.

Signed-off-by: Erez Zilber <[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
-~----------~----~----~----~------~----~------~--~---

Add logging to scsi_transport_iscsi.c

Logging for connections and sessions in the scsi_transport_iscsi module
is now controlled by module parameters.

Signed-off-by: Erez Zilber <[email protected]>
---
 kernel/2.6.14-23_compat.patch |  105 ++++++++++++++++++++---------------------
 kernel/2.6.24_compat.patch    |  101 +++++++++++++++++++--------------------
 kernel/scsi_transport_iscsi.c |   64 +++++++++++++++++++++++++
 3 files changed, 164 insertions(+), 106 deletions(-)

diff --git a/kernel/2.6.14-23_compat.patch b/kernel/2.6.14-23_compat.patch
index ab233bb..306ed2e 100644
--- a/kernel/2.6.14-23_compat.patch
+++ b/kernel/2.6.14-23_compat.patch
@@ -1,8 +1,8 @@
 diff --git a/iscsi_tcp.c b/iscsi_tcp.c
-index caa116c..71df5b9 100644
+index bce1594..c46888d 100644
 --- a/iscsi_tcp.c
 +++ b/iscsi_tcp.c
-@@ -456,11 +456,9 @@ static int iscsi_sw_tcp_pdu_init(struct iscsi_task *task,
+@@ -460,11 +460,9 @@ static int iscsi_sw_tcp_pdu_init(struct iscsi_task *task,
  	if (!task->sc)
  		iscsi_sw_tcp_send_linear_data_prep(conn, task->data, count);
  	else {
@@ -17,7 +17,7 @@ index caa116c..71df5b9 100644
  	}
  
  	if (err) {
-@@ -793,7 +791,11 @@ iscsi_sw_tcp_session_create(struct iscsi_endpoint *ep, uint16_t cmds_max,
+@@ -797,7 +795,11 @@ iscsi_sw_tcp_session_create(struct iscsi_endpoint *ep, uint16_t cmds_max,
  	shost->max_lun = iscsi_max_lun;
  	shost->max_id = 0;
  	shost->max_channel = 0;
@@ -29,7 +29,7 @@ index caa116c..71df5b9 100644
  
  	if (iscsi_host_add(shost, NULL))
  		goto free_host;
-@@ -832,12 +834,6 @@ static void iscsi_sw_tcp_session_destroy(struct iscsi_cls_session *cls_session)
+@@ -836,12 +838,6 @@ static void iscsi_sw_tcp_session_destroy(struct iscsi_cls_session *cls_session)
  	iscsi_host_free(shost);
  }
  
@@ -42,7 +42,7 @@ index caa116c..71df5b9 100644
  static int iscsi_sw_tcp_slave_configure(struct scsi_device *sdev)
  {
  	blk_queue_bounce_limit(sdev->request_queue, BLK_BOUNCE_ANY);
-@@ -846,6 +842,9 @@ static int iscsi_sw_tcp_slave_configure(struct scsi_device *sdev)
+@@ -850,6 +846,9 @@ static int iscsi_sw_tcp_slave_configure(struct scsi_device *sdev)
  }
  
  static struct scsi_host_template iscsi_sw_tcp_sht = {
@@ -52,7 +52,7 @@ index caa116c..71df5b9 100644
  	.module			= THIS_MODULE,
  	.name			= "iSCSI Initiator over TCP/IP",
  	.queuecommand           = iscsi_queuecommand,
-@@ -856,9 +855,8 @@ static struct scsi_host_template iscsi_sw_tcp_sht = {
+@@ -860,9 +859,8 @@ static struct scsi_host_template iscsi_sw_tcp_sht = {
  	.cmd_per_lun		= ISCSI_DEF_CMD_PER_LUN,
  	.eh_abort_handler       = iscsi_eh_abort,
  	.eh_device_reset_handler= iscsi_eh_device_reset,
@@ -77,7 +77,7 @@ index f9a4044..ab20530 100644
  #include "libiscsi_tcp.h"
  
 diff --git a/libiscsi.c b/libiscsi.c
-index fe4b66e..6217f76 100644
+index 73c4231..a55dbbd 100644
 --- a/libiscsi.c
 +++ b/libiscsi.c
 @@ -24,7 +24,10 @@
@@ -91,7 +91,7 @@ index fe4b66e..6217f76 100644
  #include <asm/unaligned.h>
  #include <net/tcp.h>
  #include <scsi/scsi_cmnd.h>
-@@ -60,6 +63,8 @@ MODULE_PARM_DESC(debug_libiscsi, "Turn on debugging for libiscsi module. "
+@@ -83,6 +86,8 @@ MODULE_PARM_DESC(debug_libiscsi_eh,
  					     __func__, ##arg);		\
  	} while (0);
  
@@ -100,7 +100,7 @@ index fe4b66e..6217f76 100644
  /* Serial Number Arithmetic, 32 bits, less than, RFC1982 */
  #define SNA32_CHECK 2147483648UL
  
-@@ -229,7 +234,7 @@ static int iscsi_prep_bidi_ahs(struct iscsi_task *task)
+@@ -252,7 +257,7 @@ static int iscsi_prep_bidi_ahs(struct iscsi_task *task)
  						  sizeof(rlen_ahdr->reserved));
  	rlen_ahdr->ahstype = ISCSI_AHSTYPE_RLENGTH;
  	rlen_ahdr->reserved = 0;
@@ -109,7 +109,7 @@ index fe4b66e..6217f76 100644
  
  	ISCSI_DBG_SESSION(task->conn->session,
  			  "bidi-in rlen_ahdr->read_length(%d) "
-@@ -300,7 +305,7 @@ static int iscsi_prep_scsi_cmd_pdu(struct iscsi_task *task)
+@@ -323,7 +328,7 @@ static int iscsi_prep_scsi_cmd_pdu(struct iscsi_task *task)
  			return rc;
  	}
  	if (sc->sc_data_direction == DMA_TO_DEVICE) {
@@ -118,7 +118,7 @@ index fe4b66e..6217f76 100644
  		struct iscsi_r2t_info *r2t = &task->unsol_r2t;
  
  		hdr->data_length = cpu_to_be32(out_len);
-@@ -346,7 +351,7 @@ static int iscsi_prep_scsi_cmd_pdu(struct iscsi_task *task)
+@@ -369,7 +374,7 @@ static int iscsi_prep_scsi_cmd_pdu(struct iscsi_task *task)
  	} else {
  		hdr->flags |= ISCSI_FLAG_CMD_FINAL;
  		zero_data(hdr->dlength);
@@ -127,7 +127,7 @@ index fe4b66e..6217f76 100644
  
  		if (sc->sc_data_direction == DMA_FROM_DEVICE)
  			hdr->flags |= ISCSI_FLAG_CMD_READ;
-@@ -373,7 +378,7 @@ static int iscsi_prep_scsi_cmd_pdu(struct iscsi_task *task)
+@@ -396,7 +401,7 @@ static int iscsi_prep_scsi_cmd_pdu(struct iscsi_task *task)
  			  sc->sc_data_direction == DMA_TO_DEVICE ?
  			  "write" : "read", conn->id, sc, sc->cmnd[0],
  			  task->itt, scsi_bufflen(sc),
@@ -136,7 +136,7 @@ index fe4b66e..6217f76 100644
  			  session->cmdsn,
  			  session->max_cmdsn - session->exp_cmdsn + 1);
  	return 0;
-@@ -510,12 +515,7 @@ static void fail_scsi_task(struct iscsi_task *task, int err)
+@@ -533,12 +538,7 @@ static void fail_scsi_task(struct iscsi_task *task, int err)
  		state = ISCSI_TASK_ABRT_TMF;
  
  	sc->result = err << 16;
@@ -150,7 +150,7 @@ index fe4b66e..6217f76 100644
  
  	iscsi_complete_task(task, state);
  }
-@@ -706,7 +706,7 @@ invalid_datalen:
+@@ -729,7 +729,7 @@ invalid_datalen:
  			goto out;
  		}
  
@@ -159,7 +159,7 @@ index fe4b66e..6217f76 100644
  		if (datalen < senselen)
  			goto invalid_datalen;
  
-@@ -723,8 +723,8 @@ invalid_datalen:
+@@ -746,8 +746,8 @@ invalid_datalen:
  
  		if (scsi_bidi_cmnd(sc) && res_count > 0 &&
  				(rhdr->flags & ISCSI_FLAG_CMD_BIDI_OVERFLOW ||
@@ -170,7 +170,7 @@ index fe4b66e..6217f76 100644
  		else
  			sc->result = (DID_BAD_TARGET << 16) | rhdr->cmd_status;
  	}
-@@ -773,8 +773,8 @@ iscsi_data_in_rsp(struct iscsi_conn *conn, struct iscsi_hdr *hdr,
+@@ -796,8 +796,8 @@ iscsi_data_in_rsp(struct iscsi_conn *conn, struct iscsi_hdr *hdr,
  
  		if (res_count > 0 &&
  		    (rhdr->flags & ISCSI_FLAG_CMD_OVERFLOW ||
@@ -181,7 +181,7 @@ index fe4b66e..6217f76 100644
  		else
  			sc->result = (DID_BAD_TARGET << 16) | rhdr->cmd_status;
  	}
-@@ -1498,12 +1498,7 @@ fault:
+@@ -1527,12 +1527,7 @@ fault:
  	spin_unlock(&session->lock);
  	ISCSI_DBG_SESSION(session, "iscsi: cmd 0x%x is not queued (%d)\n",
  			  sc->cmnd[0], reason);
@@ -196,7 +196,7 @@ index fe4b66e..6217f76 100644
  	spin_lock(host->host_lock);
  	return 0;
 diff --git a/libiscsi.h b/libiscsi.h
-index 1798fbe..c9174ec 100644
+index 04463c1..fa45dff 100644
 --- a/libiscsi.h
 +++ b/libiscsi.h
 @@ -32,6 +32,8 @@
@@ -209,7 +209,7 @@ index 1798fbe..c9174ec 100644
  struct scsi_host_template;
  struct scsi_device;
 diff --git a/libiscsi_tcp.c b/libiscsi_tcp.c
-index c2b535b..76ead4b 100644
+index 4051e62..0448e62 100644
 --- a/libiscsi_tcp.c
 +++ b/libiscsi_tcp.c
 @@ -360,6 +360,16 @@ iscsi_segment_seek_sg(struct iscsi_segment *segment,
@@ -260,9 +260,9 @@ index c2b535b..76ead4b 100644
  
  			/*
  			 * Setup copy of Data-In into the Scsi_Cmnd
-@@ -687,8 +696,8 @@ iscsi_tcp_hdr_dissect(struct iscsi_conn *conn, struct iscsi_hdr *hdr)
- 				      tcp_task->data_offset,
+@@ -688,8 +697,8 @@ iscsi_tcp_hdr_dissect(struct iscsi_conn *conn, struct iscsi_hdr *hdr)
  				      tcp_conn->in.datalen);
+ 			task->last_xfer = jiffies;
  			rc = iscsi_segment_seek_sg(&tcp_conn->in.segment,
 -						   sdb->table.sgl,
 -						   sdb->table.nents,
@@ -611,10 +611,10 @@ index 0000000..763d07a
 +
 +#endif
 diff --git a/scsi_transport_iscsi.c b/scsi_transport_iscsi.c
-index c9e95e7..79436c4 100644
+index 95c96dc..06376d1 100644
 --- a/scsi_transport_iscsi.c
 +++ b/scsi_transport_iscsi.c
-@@ -41,13 +41,13 @@ struct iscsi_internal {
+@@ -73,13 +73,13 @@ struct iscsi_internal {
  	struct scsi_transport_template t;
  	struct iscsi_transport *iscsi_transport;
  	struct list_head list;
@@ -632,7 +632,7 @@ index c9e95e7..79436c4 100644
  };
  
  static atomic_t iscsi_session_nr; /* sysfs session id for next new session */
-@@ -64,12 +64,12 @@ static DEFINE_SPINLOCK(iscsi_transport_lock);
+@@ -96,12 +96,12 @@ static DEFINE_SPINLOCK(iscsi_transport_lock);
  #define to_iscsi_internal(tmpl) \
  	container_of(tmpl, struct iscsi_internal, t)
  
@@ -649,7 +649,7 @@ index c9e95e7..79436c4 100644
  	kfree(priv);
  }
  
-@@ -79,33 +79,31 @@ static void iscsi_transport_release(struct device *dev)
+@@ -111,33 +111,31 @@ static void iscsi_transport_release(struct device *dev)
   */
  static struct class iscsi_transport_class = {
  	.name = "iscsi_transport",
@@ -692,7 +692,7 @@ index c9e95e7..79436c4 100644
  	NULL,
  };
  
-@@ -113,6 +111,7 @@ static struct attribute_group iscsi_transport_group = {
+@@ -145,6 +143,7 @@ static struct attribute_group iscsi_transport_group = {
  	.attrs = iscsi_transport_attrs,
  };
  
@@ -700,7 +700,7 @@ index c9e95e7..79436c4 100644
  /*
   * iSCSI endpoint attrs
   */
-@@ -236,9 +235,10 @@ struct iscsi_endpoint *iscsi_lookup_endpoint(u64 handle)
+@@ -268,9 +267,10 @@ struct iscsi_endpoint *iscsi_lookup_endpoint(u64 handle)
  	return ep;
  }
  EXPORT_SYMBOL_GPL(iscsi_lookup_endpoint);
@@ -712,7 +712,7 @@ index c9e95e7..79436c4 100644
  {
  	struct Scsi_Host *shost = dev_to_shost(dev);
  	struct iscsi_cls_host *ihost = shost->shost_data;
-@@ -545,15 +545,6 @@ static void __iscsi_unblock_session(struct work_struct *work)
+@@ -581,15 +581,6 @@ static void __iscsi_unblock_session(struct work_struct *work)
  	spin_unlock_irqrestore(&session->lock, flags);
  	/* start IO */
  	scsi_target_unblock(&session->dev);
@@ -728,17 +728,17 @@ index c9e95e7..79436c4 100644
  }
  
  /**
-@@ -698,7 +689,8 @@ int iscsi_add_session(struct iscsi_cls_session *session, unsigned int target_id)
+@@ -744,7 +735,8 @@ int iscsi_add_session(struct iscsi_cls_session *session, unsigned int target_id)
  	}
  	session->target_id = id;
  
 -	dev_set_name(&session->dev, "session%u", session->sid);
 +	snprintf(session->dev.bus_id, BUS_ID_SIZE, "session%u",
 +		 session->sid);
+ 	ISCSI_DBG_TRANS_SESSION(session, "Adding device\n");
  	err = device_add(&session->dev);
  	if (err) {
- 		iscsi_cls_session_printk(KERN_ERR, session,
-@@ -870,7 +862,8 @@ iscsi_create_conn(struct iscsi_cls_session *session, int dd_size, uint32_t cid)
+@@ -925,7 +917,8 @@ iscsi_create_conn(struct iscsi_cls_session *session, int dd_size, uint32_t cid)
  	if (!get_device(&session->dev))
  		goto free_conn;
  
@@ -748,7 +748,7 @@ index c9e95e7..79436c4 100644
  	conn->dev.parent = &session->dev;
  	conn->dev.release = iscsi_conn_release;
  	err = device_register(&conn->dev);
-@@ -1309,6 +1302,8 @@ static int
+@@ -1373,6 +1366,8 @@ static int
  iscsi_if_transport_ep(struct iscsi_transport *transport,
  		      struct iscsi_uevent *ev, int msg_type)
  {
@@ -757,7 +757,7 @@ index c9e95e7..79436c4 100644
  	struct iscsi_endpoint *ep;
  	int rc = 0;
  
-@@ -1340,6 +1335,8 @@ iscsi_if_transport_ep(struct iscsi_transport *transport,
+@@ -1404,6 +1399,8 @@ iscsi_if_transport_ep(struct iscsi_transport *transport,
  		break;
  	}
  	return rc;
@@ -766,7 +766,7 @@ index c9e95e7..79436c4 100644
  }
  
  static int
-@@ -1421,6 +1418,9 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
+@@ -1485,6 +1482,9 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
  					      ev->u.c_session.queue_depth);
  		break;
  	case ISCSI_UEVENT_CREATE_BOUND_SESSION:
@@ -776,7 +776,7 @@ index c9e95e7..79436c4 100644
  		ep = iscsi_lookup_endpoint(ev->u.c_bound_session.ep_handle);
  		if (!ep) {
  			err = -EINVAL;
-@@ -1432,6 +1432,7 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
+@@ -1496,6 +1496,7 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
  					ev->u.c_bound_session.cmds_max,
  					ev->u.c_bound_session.queue_depth);
  		break;
@@ -784,7 +784,7 @@ index c9e95e7..79436c4 100644
  	case ISCSI_UEVENT_DESTROY_SESSION:
  		session = iscsi_session_lookup(ev->u.d_session.sid);
  		if (session)
-@@ -1516,55 +1517,70 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
+@@ -1580,55 +1581,70 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
  }
  
  /*
@@ -891,7 +891,7 @@ index c9e95e7..79436c4 100644
  	__ATTR(_name,_mode,_show,_store)
  
  /*
-@@ -1572,10 +1588,9 @@ struct device_attribute dev_attr_##_prefix##_##_name =	\
+@@ -1636,10 +1652,9 @@ struct device_attribute dev_attr_##_prefix##_##_name =	\
   */
  #define iscsi_conn_attr_show(param)					\
  static ssize_t								\
@@ -904,7 +904,7 @@ index c9e95e7..79436c4 100644
  	struct iscsi_transport *t = conn->transport;			\
  	return t->get_conn_param(conn, param, buf);			\
  }
-@@ -1599,16 +1614,17 @@ iscsi_conn_attr(address, ISCSI_PARAM_CONN_ADDRESS);
+@@ -1663,16 +1678,17 @@ iscsi_conn_attr(address, ISCSI_PARAM_CONN_ADDRESS);
  iscsi_conn_attr(ping_tmo, ISCSI_PARAM_PING_TMO);
  iscsi_conn_attr(recv_tmo, ISCSI_PARAM_RECV_TMO);
  
@@ -926,7 +926,7 @@ index c9e95e7..79436c4 100644
  	struct iscsi_transport *t = session->transport;			\
  									\
  	if (perm && !capable(CAP_SYS_ADMIN))				\
-@@ -1642,10 +1658,9 @@ iscsi_session_attr(ifacename, ISCSI_PARAM_IFACE_NAME, 0);
+@@ -1706,10 +1722,9 @@ iscsi_session_attr(ifacename, ISCSI_PARAM_IFACE_NAME, 0);
  iscsi_session_attr(initiatorname, ISCSI_PARAM_INITIATOR_NAME, 0)
  
  static ssize_t
@@ -939,7 +939,7 @@ index c9e95e7..79436c4 100644
  	return sprintf(buf, "%s\n", iscsi_session_state_name(session->state));
  }
  static ISCSI_CLASS_ATTR(priv_sess, state, S_IRUGO, show_priv_session_state,
-@@ -1653,11 +1668,9 @@ static ISCSI_CLASS_ATTR(priv_sess, state, S_IRUGO, show_priv_session_state,
+@@ -1717,11 +1732,9 @@ static ISCSI_CLASS_ATTR(priv_sess, state, S_IRUGO, show_priv_session_state,
  
  #define iscsi_priv_session_attr_show(field, format)			\
  static ssize_t								\
@@ -953,7 +953,7 @@ index c9e95e7..79436c4 100644
  	return sprintf(buf, format"\n", session->field);		\
  }
  
-@@ -1672,10 +1685,9 @@ iscsi_priv_session_attr(recovery_tmo, "%d");
+@@ -1736,10 +1749,9 @@ iscsi_priv_session_attr(recovery_tmo, "%d");
   */
  #define iscsi_host_attr_show(param)					\
  static ssize_t								\
@@ -966,7 +966,7 @@ index c9e95e7..79436c4 100644
  	struct iscsi_internal *priv = to_iscsi_internal(shost->transportt); \
  	return priv->iscsi_transport->get_host_param(shost, param, buf); \
  }
-@@ -1692,7 +1704,7 @@ iscsi_host_attr(initiatorname, ISCSI_HOST_PARAM_INITIATOR_NAME);
+@@ -1756,7 +1768,7 @@ iscsi_host_attr(initiatorname, ISCSI_HOST_PARAM_INITIATOR_NAME);
  
  #define SETUP_PRIV_SESSION_RD_ATTR(field)				\
  do {									\
@@ -975,7 +975,7 @@ index c9e95e7..79436c4 100644
  	count++;							\
  } while (0)
  
-@@ -1700,7 +1712,7 @@ do {									\
+@@ -1764,7 +1776,7 @@ do {									\
  #define SETUP_SESSION_RD_ATTR(field, param_flag)			\
  do {									\
  	if (tt->param_mask & param_flag) {				\
@@ -984,7 +984,7 @@ index c9e95e7..79436c4 100644
  		count++;						\
  	}								\
  } while (0)
-@@ -1708,7 +1720,7 @@ do {									\
+@@ -1772,7 +1784,7 @@ do {									\
  #define SETUP_CONN_RD_ATTR(field, param_flag)				\
  do {									\
  	if (tt->param_mask & param_flag) {				\
@@ -993,7 +993,7 @@ index c9e95e7..79436c4 100644
  		count++;						\
  	}								\
  } while (0)
-@@ -1716,7 +1728,7 @@ do {									\
+@@ -1780,7 +1792,7 @@ do {									\
  #define SETUP_HOST_RD_ATTR(field, param_flag)				\
  do {									\
  	if (tt->host_param_mask & param_flag) {				\
@@ -1002,7 +1002,7 @@ index c9e95e7..79436c4 100644
  		count++;						\
  	}								\
  } while (0)
-@@ -1808,15 +1820,15 @@ iscsi_register_transport(struct iscsi_transport *tt)
+@@ -1872,15 +1884,15 @@ iscsi_register_transport(struct iscsi_transport *tt)
  	priv->t.user_scan = iscsi_user_scan;
  	priv->t.create_work_queue = 1;
  
@@ -1023,7 +1023,7 @@ index c9e95e7..79436c4 100644
  
  	/* host parameters */
  	priv->t.host_attrs.ac.attrs = &priv->host_attrs[0];
-@@ -1895,9 +1907,8 @@ iscsi_register_transport(struct iscsi_transport *tt)
+@@ -1959,9 +1971,8 @@ iscsi_register_transport(struct iscsi_transport *tt)
  	printk(KERN_NOTICE "iscsi: registered transport (%s)\n", tt->name);
  	return &priv->t;
  
@@ -1035,7 +1035,7 @@ index c9e95e7..79436c4 100644
  free_priv:
  	kfree(priv);
  	return NULL;
-@@ -1924,8 +1935,8 @@ int iscsi_unregister_transport(struct iscsi_transport *tt)
+@@ -1988,8 +1999,8 @@ int iscsi_unregister_transport(struct iscsi_transport *tt)
  	transport_container_unregister(&priv->session_cont);
  	transport_container_unregister(&priv->t.host_attrs);
  
@@ -1046,7 +1046,7 @@ index c9e95e7..79436c4 100644
  	mutex_unlock(&rx_queue_mutex);
  
  	return 0;
-@@ -1945,13 +1956,14 @@ static __init int iscsi_transport_init(void)
+@@ -2009,13 +2020,14 @@ static __init int iscsi_transport_init(void)
  	if (err)
  		return err;
  
@@ -1063,7 +1063,7 @@ index c9e95e7..79436c4 100644
  
  	err = transport_class_register(&iscsi_connection_class);
  	if (err)
-@@ -1982,8 +1994,10 @@ unregister_conn_class:
+@@ -2046,8 +2058,10 @@ unregister_conn_class:
  	transport_class_unregister(&iscsi_connection_class);
  unregister_host_class:
  	transport_class_unregister(&iscsi_host_class);
@@ -1074,7 +1074,7 @@ index c9e95e7..79436c4 100644
  unregister_transport_class:
  	class_unregister(&iscsi_transport_class);
  	return err;
-@@ -1996,7 +2010,9 @@ static void __exit iscsi_transport_exit(void)
+@@ -2060,7 +2074,9 @@ static void __exit iscsi_transport_exit(void)
  	transport_class_unregister(&iscsi_connection_class);
  	transport_class_unregister(&iscsi_session_class);
  	transport_class_unregister(&iscsi_host_class);
@@ -1097,6 +1097,3 @@ index 6beea23..d509d17 100644
  struct scsi_transport_template;
  struct iscsi_transport;
  struct iscsi_endpoint;
--- 
-1.5.2.1
-
diff --git a/kernel/2.6.24_compat.patch b/kernel/2.6.24_compat.patch
index 6e1ee09..3ad9a6d 100644
--- a/kernel/2.6.24_compat.patch
+++ b/kernel/2.6.24_compat.patch
@@ -1,8 +1,8 @@
 diff --git a/iscsi_tcp.c b/iscsi_tcp.c
-index caa116c..7c7527e 100644
+index bce1594..f856b7f 100644
 --- a/iscsi_tcp.c
 +++ b/iscsi_tcp.c
-@@ -456,11 +456,9 @@ static int iscsi_sw_tcp_pdu_init(struct iscsi_task *task,
+@@ -460,11 +460,9 @@ static int iscsi_sw_tcp_pdu_init(struct iscsi_task *task,
  	if (!task->sc)
  		iscsi_sw_tcp_send_linear_data_prep(conn, task->data, count);
  	else {
@@ -17,7 +17,7 @@ index caa116c..7c7527e 100644
  	}
  
  	if (err) {
-@@ -793,7 +791,11 @@ iscsi_sw_tcp_session_create(struct iscsi_endpoint *ep, uint16_t cmds_max,
+@@ -797,7 +795,11 @@ iscsi_sw_tcp_session_create(struct iscsi_endpoint *ep, uint16_t cmds_max,
  	shost->max_lun = iscsi_max_lun;
  	shost->max_id = 0;
  	shost->max_channel = 0;
@@ -29,7 +29,7 @@ index caa116c..7c7527e 100644
  
  	if (iscsi_host_add(shost, NULL))
  		goto free_host;
-@@ -846,6 +848,9 @@ static int iscsi_sw_tcp_slave_configure(struct scsi_device *sdev)
+@@ -850,6 +852,9 @@ static int iscsi_sw_tcp_slave_configure(struct scsi_device *sdev)
  }
  
  static struct scsi_host_template iscsi_sw_tcp_sht = {
@@ -39,7 +39,7 @@ index caa116c..7c7527e 100644
  	.module			= THIS_MODULE,
  	.name			= "iSCSI Initiator over TCP/IP",
  	.queuecommand           = iscsi_queuecommand,
-@@ -856,7 +861,7 @@ static struct scsi_host_template iscsi_sw_tcp_sht = {
+@@ -860,7 +865,7 @@ static struct scsi_host_template iscsi_sw_tcp_sht = {
  	.cmd_per_lun		= ISCSI_DEF_CMD_PER_LUN,
  	.eh_abort_handler       = iscsi_eh_abort,
  	.eh_device_reset_handler= iscsi_eh_device_reset,
@@ -62,10 +62,10 @@ index f9a4044..ab20530 100644
  #include "libiscsi_tcp.h"
  
 diff --git a/libiscsi.c b/libiscsi.c
-index fe4b66e..007bca1 100644
+index 73c4231..911939f 100644
 --- a/libiscsi.c
 +++ b/libiscsi.c
-@@ -60,6 +60,8 @@ MODULE_PARM_DESC(debug_libiscsi, "Turn on debugging for libiscsi module. "
+@@ -83,6 +83,8 @@ MODULE_PARM_DESC(debug_libiscsi_eh,
  					     __func__, ##arg);		\
  	} while (0);
  
@@ -74,7 +74,7 @@ index fe4b66e..007bca1 100644
  /* Serial Number Arithmetic, 32 bits, less than, RFC1982 */
  #define SNA32_CHECK 2147483648UL
  
-@@ -229,7 +231,7 @@ static int iscsi_prep_bidi_ahs(struct iscsi_task *task)
+@@ -252,7 +254,7 @@ static int iscsi_prep_bidi_ahs(struct iscsi_task *task)
  						  sizeof(rlen_ahdr->reserved));
  	rlen_ahdr->ahstype = ISCSI_AHSTYPE_RLENGTH;
  	rlen_ahdr->reserved = 0;
@@ -83,7 +83,7 @@ index fe4b66e..007bca1 100644
  
  	ISCSI_DBG_SESSION(task->conn->session,
  			  "bidi-in rlen_ahdr->read_length(%d) "
-@@ -300,7 +302,7 @@ static int iscsi_prep_scsi_cmd_pdu(struct iscsi_task *task)
+@@ -323,7 +325,7 @@ static int iscsi_prep_scsi_cmd_pdu(struct iscsi_task *task)
  			return rc;
  	}
  	if (sc->sc_data_direction == DMA_TO_DEVICE) {
@@ -92,7 +92,7 @@ index fe4b66e..007bca1 100644
  		struct iscsi_r2t_info *r2t = &task->unsol_r2t;
  
  		hdr->data_length = cpu_to_be32(out_len);
-@@ -346,7 +348,7 @@ static int iscsi_prep_scsi_cmd_pdu(struct iscsi_task *task)
+@@ -369,7 +371,7 @@ static int iscsi_prep_scsi_cmd_pdu(struct iscsi_task *task)
  	} else {
  		hdr->flags |= ISCSI_FLAG_CMD_FINAL;
  		zero_data(hdr->dlength);
@@ -101,7 +101,7 @@ index fe4b66e..007bca1 100644
  
  		if (sc->sc_data_direction == DMA_FROM_DEVICE)
  			hdr->flags |= ISCSI_FLAG_CMD_READ;
-@@ -373,7 +375,7 @@ static int iscsi_prep_scsi_cmd_pdu(struct iscsi_task *task)
+@@ -396,7 +398,7 @@ static int iscsi_prep_scsi_cmd_pdu(struct iscsi_task *task)
  			  sc->sc_data_direction == DMA_TO_DEVICE ?
  			  "write" : "read", conn->id, sc, sc->cmnd[0],
  			  task->itt, scsi_bufflen(sc),
@@ -110,7 +110,7 @@ index fe4b66e..007bca1 100644
  			  session->cmdsn,
  			  session->max_cmdsn - session->exp_cmdsn + 1);
  	return 0;
-@@ -510,12 +512,7 @@ static void fail_scsi_task(struct iscsi_task *task, int err)
+@@ -533,12 +535,7 @@ static void fail_scsi_task(struct iscsi_task *task, int err)
  		state = ISCSI_TASK_ABRT_TMF;
  
  	sc->result = err << 16;
@@ -124,7 +124,7 @@ index fe4b66e..007bca1 100644
  
  	iscsi_complete_task(task, state);
  }
-@@ -706,7 +703,7 @@ invalid_datalen:
+@@ -729,7 +726,7 @@ invalid_datalen:
  			goto out;
  		}
  
@@ -133,7 +133,7 @@ index fe4b66e..007bca1 100644
  		if (datalen < senselen)
  			goto invalid_datalen;
  
-@@ -723,8 +720,8 @@ invalid_datalen:
+@@ -746,8 +743,8 @@ invalid_datalen:
  
  		if (scsi_bidi_cmnd(sc) && res_count > 0 &&
  				(rhdr->flags & ISCSI_FLAG_CMD_BIDI_OVERFLOW ||
@@ -144,7 +144,7 @@ index fe4b66e..007bca1 100644
  		else
  			sc->result = (DID_BAD_TARGET << 16) | rhdr->cmd_status;
  	}
-@@ -773,8 +770,8 @@ iscsi_data_in_rsp(struct iscsi_conn *conn, struct iscsi_hdr *hdr,
+@@ -796,8 +793,8 @@ iscsi_data_in_rsp(struct iscsi_conn *conn, struct iscsi_hdr *hdr,
  
  		if (res_count > 0 &&
  		    (rhdr->flags & ISCSI_FLAG_CMD_OVERFLOW ||
@@ -155,7 +155,7 @@ index fe4b66e..007bca1 100644
  		else
  			sc->result = (DID_BAD_TARGET << 16) | rhdr->cmd_status;
  	}
-@@ -1498,12 +1495,7 @@ fault:
+@@ -1527,12 +1524,7 @@ fault:
  	spin_unlock(&session->lock);
  	ISCSI_DBG_SESSION(session, "iscsi: cmd 0x%x is not queued (%d)\n",
  			  sc->cmnd[0], reason);
@@ -170,7 +170,7 @@ index fe4b66e..007bca1 100644
  	spin_lock(host->host_lock);
  	return 0;
 diff --git a/libiscsi.h b/libiscsi.h
-index 1798fbe..c9174ec 100644
+index 04463c1..fa45dff 100644
 --- a/libiscsi.h
 +++ b/libiscsi.h
 @@ -32,6 +32,8 @@
@@ -183,7 +183,7 @@ index 1798fbe..c9174ec 100644
  struct scsi_host_template;
  struct scsi_device;
 diff --git a/libiscsi_tcp.c b/libiscsi_tcp.c
-index c2b535b..76ead4b 100644
+index 4051e62..0448e62 100644
 --- a/libiscsi_tcp.c
 +++ b/libiscsi_tcp.c
 @@ -360,6 +360,16 @@ iscsi_segment_seek_sg(struct iscsi_segment *segment,
@@ -234,9 +234,9 @@ index c2b535b..76ead4b 100644
  
  			/*
  			 * Setup copy of Data-In into the Scsi_Cmnd
-@@ -687,8 +696,8 @@ iscsi_tcp_hdr_dissect(struct iscsi_conn *conn, struct iscsi_hdr *hdr)
- 				      tcp_task->data_offset,
+@@ -688,8 +697,8 @@ iscsi_tcp_hdr_dissect(struct iscsi_conn *conn, struct iscsi_hdr *hdr)
  				      tcp_conn->in.datalen);
+ 			task->last_xfer = jiffies;
  			rc = iscsi_segment_seek_sg(&tcp_conn->in.segment,
 -						   sdb->table.sgl,
 -						   sdb->table.nents,
@@ -530,10 +530,10 @@ index 0000000..fd9ef7b
 +
 +#endif
 diff --git a/scsi_transport_iscsi.c b/scsi_transport_iscsi.c
-index c9e95e7..6106e0e 100644
+index 95c96dc..ca2c36c 100644
 --- a/scsi_transport_iscsi.c
 +++ b/scsi_transport_iscsi.c
-@@ -41,13 +41,13 @@ struct iscsi_internal {
+@@ -73,13 +73,13 @@ struct iscsi_internal {
  	struct scsi_transport_template t;
  	struct iscsi_transport *iscsi_transport;
  	struct list_head list;
@@ -551,7 +551,7 @@ index c9e95e7..6106e0e 100644
  };
  
  static atomic_t iscsi_session_nr; /* sysfs session id for next new session */
-@@ -64,12 +64,12 @@ static DEFINE_SPINLOCK(iscsi_transport_lock);
+@@ -96,12 +96,12 @@ static DEFINE_SPINLOCK(iscsi_transport_lock);
  #define to_iscsi_internal(tmpl) \
  	container_of(tmpl, struct iscsi_internal, t)
  
@@ -568,7 +568,7 @@ index c9e95e7..6106e0e 100644
  	kfree(priv);
  }
  
-@@ -79,33 +79,31 @@ static void iscsi_transport_release(struct device *dev)
+@@ -111,33 +111,31 @@ static void iscsi_transport_release(struct device *dev)
   */
  static struct class iscsi_transport_class = {
  	.name = "iscsi_transport",
@@ -611,7 +611,7 @@ index c9e95e7..6106e0e 100644
  	NULL,
  };
  
-@@ -113,6 +111,7 @@ static struct attribute_group iscsi_transport_group = {
+@@ -145,6 +143,7 @@ static struct attribute_group iscsi_transport_group = {
  	.attrs = iscsi_transport_attrs,
  };
  
@@ -619,7 +619,7 @@ index c9e95e7..6106e0e 100644
  /*
   * iSCSI endpoint attrs
   */
-@@ -236,9 +235,10 @@ struct iscsi_endpoint *iscsi_lookup_endpoint(u64 handle)
+@@ -268,9 +267,10 @@ struct iscsi_endpoint *iscsi_lookup_endpoint(u64 handle)
  	return ep;
  }
  EXPORT_SYMBOL_GPL(iscsi_lookup_endpoint);
@@ -631,17 +631,17 @@ index c9e95e7..6106e0e 100644
  {
  	struct Scsi_Host *shost = dev_to_shost(dev);
  	struct iscsi_cls_host *ihost = shost->shost_data;
-@@ -698,7 +698,8 @@ int iscsi_add_session(struct iscsi_cls_session *session, unsigned int target_id)
+@@ -744,7 +744,8 @@ int iscsi_add_session(struct iscsi_cls_session *session, unsigned int target_id)
  	}
  	session->target_id = id;
  
 -	dev_set_name(&session->dev, "session%u", session->sid);
 +	snprintf(session->dev.bus_id, BUS_ID_SIZE, "session%u",
 +		 session->sid);
+ 	ISCSI_DBG_TRANS_SESSION(session, "Adding device\n");
  	err = device_add(&session->dev);
  	if (err) {
- 		iscsi_cls_session_printk(KERN_ERR, session,
-@@ -870,7 +871,8 @@ iscsi_create_conn(struct iscsi_cls_session *session, int dd_size, uint32_t cid)
+@@ -925,7 +926,8 @@ iscsi_create_conn(struct iscsi_cls_session *session, int dd_size, uint32_t cid)
  	if (!get_device(&session->dev))
  		goto free_conn;
  
@@ -651,7 +651,7 @@ index c9e95e7..6106e0e 100644
  	conn->dev.parent = &session->dev;
  	conn->dev.release = iscsi_conn_release;
  	err = device_register(&conn->dev);
-@@ -1309,6 +1311,8 @@ static int
+@@ -1373,6 +1375,8 @@ static int
  iscsi_if_transport_ep(struct iscsi_transport *transport,
  		      struct iscsi_uevent *ev, int msg_type)
  {
@@ -660,7 +660,7 @@ index c9e95e7..6106e0e 100644
  	struct iscsi_endpoint *ep;
  	int rc = 0;
  
-@@ -1340,6 +1344,8 @@ iscsi_if_transport_ep(struct iscsi_transport *transport,
+@@ -1404,6 +1408,8 @@ iscsi_if_transport_ep(struct iscsi_transport *transport,
  		break;
  	}
  	return rc;
@@ -669,7 +669,7 @@ index c9e95e7..6106e0e 100644
  }
  
  static int
-@@ -1421,6 +1427,9 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
+@@ -1485,6 +1491,9 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
  					      ev->u.c_session.queue_depth);
  		break;
  	case ISCSI_UEVENT_CREATE_BOUND_SESSION:
@@ -679,7 +679,7 @@ index c9e95e7..6106e0e 100644
  		ep = iscsi_lookup_endpoint(ev->u.c_bound_session.ep_handle);
  		if (!ep) {
  			err = -EINVAL;
-@@ -1432,6 +1441,7 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
+@@ -1496,6 +1505,7 @@ iscsi_if_recv_msg(struct sk_buff *skb, struct nlmsghdr *nlh)
  					ev->u.c_bound_session.cmds_max,
  					ev->u.c_bound_session.queue_depth);
  		break;
@@ -687,7 +687,7 @@ index c9e95e7..6106e0e 100644
  	case ISCSI_UEVENT_DESTROY_SESSION:
  		session = iscsi_session_lookup(ev->u.d_session.sid);
  		if (session)
-@@ -1563,8 +1573,11 @@ iscsi_if_rx(struct sk_buff *skb)
+@@ -1627,8 +1637,11 @@ iscsi_if_rx(struct sk_buff *skb)
  	mutex_unlock(&rx_queue_mutex);
  }
  
@@ -700,7 +700,7 @@ index c9e95e7..6106e0e 100644
  	__ATTR(_name,_mode,_show,_store)
  
  /*
-@@ -1572,10 +1585,9 @@ struct device_attribute dev_attr_##_prefix##_##_name =	\
+@@ -1636,10 +1649,9 @@ struct device_attribute dev_attr_##_prefix##_##_name =	\
   */
  #define iscsi_conn_attr_show(param)					\
  static ssize_t								\
@@ -713,7 +713,7 @@ index c9e95e7..6106e0e 100644
  	struct iscsi_transport *t = conn->transport;			\
  	return t->get_conn_param(conn, param, buf);			\
  }
-@@ -1599,16 +1611,17 @@ iscsi_conn_attr(address, ISCSI_PARAM_CONN_ADDRESS);
+@@ -1663,16 +1675,17 @@ iscsi_conn_attr(address, ISCSI_PARAM_CONN_ADDRESS);
  iscsi_conn_attr(ping_tmo, ISCSI_PARAM_PING_TMO);
  iscsi_conn_attr(recv_tmo, ISCSI_PARAM_RECV_TMO);
  
@@ -735,7 +735,7 @@ index c9e95e7..6106e0e 100644
  	struct iscsi_transport *t = session->transport;			\
  									\
  	if (perm && !capable(CAP_SYS_ADMIN))				\
-@@ -1642,10 +1655,9 @@ iscsi_session_attr(ifacename, ISCSI_PARAM_IFACE_NAME, 0);
+@@ -1706,10 +1719,9 @@ iscsi_session_attr(ifacename, ISCSI_PARAM_IFACE_NAME, 0);
  iscsi_session_attr(initiatorname, ISCSI_PARAM_INITIATOR_NAME, 0)
  
  static ssize_t
@@ -748,7 +748,7 @@ index c9e95e7..6106e0e 100644
  	return sprintf(buf, "%s\n", iscsi_session_state_name(session->state));
  }
  static ISCSI_CLASS_ATTR(priv_sess, state, S_IRUGO, show_priv_session_state,
-@@ -1653,11 +1665,9 @@ static ISCSI_CLASS_ATTR(priv_sess, state, S_IRUGO, show_priv_session_state,
+@@ -1717,11 +1729,9 @@ static ISCSI_CLASS_ATTR(priv_sess, state, S_IRUGO, show_priv_session_state,
  
  #define iscsi_priv_session_attr_show(field, format)			\
  static ssize_t								\
@@ -762,7 +762,7 @@ index c9e95e7..6106e0e 100644
  	return sprintf(buf, format"\n", session->field);		\
  }
  
-@@ -1672,10 +1682,9 @@ iscsi_priv_session_attr(recovery_tmo, "%d");
+@@ -1736,10 +1746,9 @@ iscsi_priv_session_attr(recovery_tmo, "%d");
   */
  #define iscsi_host_attr_show(param)					\
  static ssize_t								\
@@ -775,7 +775,7 @@ index c9e95e7..6106e0e 100644
  	struct iscsi_internal *priv = to_iscsi_internal(shost->transportt); \
  	return priv->iscsi_transport->get_host_param(shost, param, buf); \
  }
-@@ -1692,7 +1701,7 @@ iscsi_host_attr(initiatorname, ISCSI_HOST_PARAM_INITIATOR_NAME);
+@@ -1756,7 +1765,7 @@ iscsi_host_attr(initiatorname, ISCSI_HOST_PARAM_INITIATOR_NAME);
  
  #define SETUP_PRIV_SESSION_RD_ATTR(field)				\
  do {									\
@@ -784,7 +784,7 @@ index c9e95e7..6106e0e 100644
  	count++;							\
  } while (0)
  
-@@ -1700,7 +1709,7 @@ do {									\
+@@ -1764,7 +1773,7 @@ do {									\
  #define SETUP_SESSION_RD_ATTR(field, param_flag)			\
  do {									\
  	if (tt->param_mask & param_flag) {				\
@@ -793,7 +793,7 @@ index c9e95e7..6106e0e 100644
  		count++;						\
  	}								\
  } while (0)
-@@ -1708,7 +1717,7 @@ do {									\
+@@ -1772,7 +1781,7 @@ do {									\
  #define SETUP_CONN_RD_ATTR(field, param_flag)				\
  do {									\
  	if (tt->param_mask & param_flag) {				\
@@ -802,7 +802,7 @@ index c9e95e7..6106e0e 100644
  		count++;						\
  	}								\
  } while (0)
-@@ -1716,7 +1725,7 @@ do {									\
+@@ -1780,7 +1789,7 @@ do {									\
  #define SETUP_HOST_RD_ATTR(field, param_flag)				\
  do {									\
  	if (tt->host_param_mask & param_flag) {				\
@@ -811,7 +811,7 @@ index c9e95e7..6106e0e 100644
  		count++;						\
  	}								\
  } while (0)
-@@ -1808,15 +1817,15 @@ iscsi_register_transport(struct iscsi_transport *tt)
+@@ -1872,15 +1881,15 @@ iscsi_register_transport(struct iscsi_transport *tt)
  	priv->t.user_scan = iscsi_user_scan;
  	priv->t.create_work_queue = 1;
  
@@ -832,7 +832,7 @@ index c9e95e7..6106e0e 100644
  
  	/* host parameters */
  	priv->t.host_attrs.ac.attrs = &priv->host_attrs[0];
-@@ -1895,9 +1904,8 @@ iscsi_register_transport(struct iscsi_transport *tt)
+@@ -1959,9 +1968,8 @@ iscsi_register_transport(struct iscsi_transport *tt)
  	printk(KERN_NOTICE "iscsi: registered transport (%s)\n", tt->name);
  	return &priv->t;
  
@@ -844,7 +844,7 @@ index c9e95e7..6106e0e 100644
  free_priv:
  	kfree(priv);
  	return NULL;
-@@ -1924,8 +1932,8 @@ int iscsi_unregister_transport(struct iscsi_transport *tt)
+@@ -1988,8 +1996,8 @@ int iscsi_unregister_transport(struct iscsi_transport *tt)
  	transport_container_unregister(&priv->session_cont);
  	transport_container_unregister(&priv->t.host_attrs);
  
@@ -855,7 +855,7 @@ index c9e95e7..6106e0e 100644
  	mutex_unlock(&rx_queue_mutex);
  
  	return 0;
-@@ -1945,13 +1953,14 @@ static __init int iscsi_transport_init(void)
+@@ -2009,13 +2017,14 @@ static __init int iscsi_transport_init(void)
  	if (err)
  		return err;
  
@@ -872,7 +872,7 @@ index c9e95e7..6106e0e 100644
  
  	err = transport_class_register(&iscsi_connection_class);
  	if (err)
-@@ -1982,8 +1991,10 @@ unregister_conn_class:
+@@ -2046,8 +2055,10 @@ unregister_conn_class:
  	transport_class_unregister(&iscsi_connection_class);
  unregister_host_class:
  	transport_class_unregister(&iscsi_host_class);
@@ -883,7 +883,7 @@ index c9e95e7..6106e0e 100644
  unregister_transport_class:
  	class_unregister(&iscsi_transport_class);
  	return err;
-@@ -1996,7 +2007,9 @@ static void __exit iscsi_transport_exit(void)
+@@ -2060,7 +2071,9 @@ static void __exit iscsi_transport_exit(void)
  	transport_class_unregister(&iscsi_connection_class);
  	transport_class_unregister(&iscsi_session_class);
  	transport_class_unregister(&iscsi_host_class);
@@ -906,6 +906,3 @@ index 6beea23..d509d17 100644
  struct scsi_transport_template;
  struct iscsi_transport;
  struct iscsi_endpoint;
--- 
-1.5.2.1
-
diff --git a/kernel/scsi_transport_iscsi.c b/kernel/scsi_transport_iscsi.c
index 5434f5b..95c96dc 100644
--- a/kernel/scsi_transport_iscsi.c
+++ b/kernel/scsi_transport_iscsi.c
@@ -36,6 +36,38 @@
 
 #define ISCSI_TRANSPORT_VERSION "2.0-871"
 
+static int dbg_session;
+module_param_named(debug_session, dbg_session, int,
+		   S_IRUGO | S_IWUSR);
+MODULE_PARM_DESC(debug_session,
+		 "Turn on debugging for sessions in scsi_transport_iscsi "
+		 "module. Set to 1 to turn on, and zero to turn off. Default "
+		 "is off.");
+
+static int dbg_conn;
+module_param_named(debug_conn, dbg_conn, int,
+		   S_IRUGO | S_IWUSR);
+MODULE_PARM_DESC(debug_conn,
+		 "Turn on debugging for connections in scsi_transport_iscsi "
+		 "module. Set to 1 to turn on, and zero to turn off. Default "
+		 "is off.");
+
+#define ISCSI_DBG_TRANS_SESSION(_session, dbg_fmt, arg...)		\
+	do {								\
+		if (dbg_session)					\
+			iscsi_cls_session_printk(KERN_INFO, _session,	\
+						 "%s " dbg_fmt,		\
+						 __func__, ##arg);	\
+	} while (0);
+
+#define ISCSI_DBG_TRANS_CONN(_conn, dbg_fmt, arg...)			\
+	do {								\
+		if (dbg_conn)						\
+			iscsi_cls_conn_printk(KERN_INFO, _conn,		\
+					      "%s " dbg_fmt,		\
+					      __func__, ##arg);	\
+	} while (0);
+
 struct iscsi_internal {
 	int daemon_pid;
 	struct scsi_transport_template t;
@@ -376,6 +408,8 @@ static void iscsi_session_release(struct device *dev)
 	struct iscsi_cls_session *session = iscsi_dev_to_session(dev);
 	struct Scsi_Host *shost;
 
+	ISCSI_DBG_TRANS_SESSION(session, "Releasing session\n");
+
 	shost = iscsi_session_to_shost(session);
 	scsi_host_put(shost);
 	kfree(session);
@@ -535,6 +569,8 @@ static void __iscsi_unblock_session(struct work_struct *work)
 	struct iscsi_cls_host *ihost = shost->shost_data;
 	unsigned long flags;
 
+	ISCSI_DBG_TRANS_SESSION(session, "Unblocking session\n");
+
 	/*
 	 * The recovery and unblock work get run from the same workqueue,
 	 * so try to cancel it if it was going to run after this unblock.
@@ -580,6 +616,8 @@ static void __iscsi_block_session(struct work_struct *work)
 				     block_work);
 	unsigned long flags;
 
+	ISCSI_DBG_TRANS_SESSION(session, "Blocking session\n");
+
 	spin_lock_irqsave(&session->lock, flags);
 	session->state = ISCSI_SESSION_FAILED;
 	spin_unlock_irqrestore(&session->lock, flags);
@@ -603,6 +641,8 @@ static void __iscsi_unbind_session(struct work_struct *work)
 	struct iscsi_cls_host *ihost = shost->shost_data;
 	unsigned long flags;
 
+	ISCSI_DBG_TRANS_SESSION(session, "Unbinding session\n");
+
 	/* Prevent new scans and make sure scanning is not in progress */
 	mutex_lock(&ihost->mutex);
 	spin_lock_irqsave(&session->lock, flags);
@@ -615,7 +655,9 @@ static void __iscsi_unbind_session(struct work_struct *work)
 	spin_unlock_irqrestore(&session->lock, flags);
 	mutex_unlock(&ihost->mutex);
 
+	ISCSI_DBG_TRANS_SESSION(session, "Removing target\n");
 	scsi_remove_target(&session->dev);
+	ISCSI_DBG_TRANS_SESSION(session, "Completed target removal\n");
 	iscsi_session_event(session, ISCSI_KEVENT_UNBIND_SESSION);
 }
 
@@ -630,6 +672,8 @@ iscsi_alloc_session(struct Scsi_Host *shost, struct iscsi_transport *transport,
 	if (!session)
 		return NULL;
 
+	ISCSI_DBG_TRANS_SESSION(session, "Allocated new session\n");
+
 	session->transport = transport;
 	session->recovery_tmo = 120;
 	session->state = ISCSI_SESSION_FREE;
@@ -677,6 +721,8 @@ int iscsi_add_session(struct iscsi_cls_session *session, unsigned int target_id)
 	unsigned int id = target_id;
 	int err;
 
+	ISCSI_DBG_TRANS_SESSION(session, "Adding session\n");
+
 	ihost = shost->shost_data;
 	session->sid = atomic_add_return(1, &iscsi_session_nr);
 
@@ -699,6 +745,7 @@ int iscsi_add_session(struct iscsi_cls_session *session, unsigned int target_id)
 	session->target_id = id;
 
 	dev_set_name(&session->dev, "session%u", session->sid);
+	ISCSI_DBG_TRANS_SESSION(session, "Adding device\n");
 	err = device_add(&session->dev);
 	if (err) {
 		iscsi_cls_session_printk(KERN_ERR, session,
@@ -752,6 +799,8 @@ static void iscsi_conn_release(struct device *dev)
 	struct iscsi_cls_conn *conn = iscsi_dev_to_conn(dev);
 	struct device *parent = conn->dev.parent;
 
+	ISCSI_DBG_TRANS_CONN(conn, "Releasing conn\n");
+
 	kfree(conn);
 	put_device(parent);
 }
@@ -774,6 +823,8 @@ void iscsi_remove_session(struct iscsi_cls_session *session)
 	unsigned long flags;
 	int err;
 
+	ISCSI_DBG_TRANS_SESSION(session, "Removing session\n");
+
 	spin_lock_irqsave(&sesslock, flags);
 	list_del(&session->sess_list);
 	spin_unlock_irqrestore(&sesslock, flags);
@@ -813,6 +864,7 @@ EXPORT_SYMBOL_GPL(iscsi_remove_session);
 
 void iscsi_free_session(struct iscsi_cls_session *session)
 {
+	ISCSI_DBG_TRANS_SESSION(session, "Releaing session\n");
 	iscsi_session_event(session, ISCSI_KEVENT_DESTROY_SESSION);
 	put_device(&session->dev);
 }
@@ -827,6 +879,7 @@ EXPORT_SYMBOL_GPL(iscsi_free_session);
  */
 int iscsi_destroy_session(struct iscsi_cls_session *session)
 {
+	ISCSI_DBG_TRANS_SESSION(session, "Destorying session\n");
 	iscsi_remove_session(session);
 	iscsi_free_session(session);
 	return 0;
@@ -866,6 +919,8 @@ iscsi_create_conn(struct iscsi_cls_session *session, int dd_size, uint32_t cid)
 	conn->transport = transport;
 	conn->cid = cid;
 
+	ISCSI_DBG_TRANS_CONN(conn, "Created conn\n");
+
 	/* this is released in the dev's release function */
 	if (!get_device(&session->dev))
 		goto free_conn;
@@ -906,6 +961,8 @@ int iscsi_destroy_conn(struct iscsi_cls_conn *conn)
 {
 	unsigned long flags;
 
+	ISCSI_DBG_TRANS_CONN(conn, "Destorying conn\n");
+
 	spin_lock_irqsave(&connlock, flags);
 	conn->active = 0;
 	list_del(&conn->conn_list);
@@ -1147,6 +1204,7 @@ int iscsi_session_event(struct iscsi_cls_session *session,
 	ev = NLMSG_DATA(nlh);
 	ev->transport_handle = iscsi_handle(session->transport);
 
+	ISCSI_DBG_TRANS_SESSION(session, "Handling event %d\n", event);
 	ev->type = event;
 	switch (event) {
 	case ISCSI_KEVENT_DESTROY_SESSION:
@@ -1196,6 +1254,8 @@ iscsi_if_create_session(struct iscsi_internal *priv, struct iscsi_endpoint *ep,
 	if (!session)
 		return -ENOMEM;
 
+	ISCSI_DBG_TRANS_SESSION(session, "Created transport session\n");
+
 	shost = iscsi_session_to_shost(session);
 	ev->r.c_session_ret.host_no = shost->host_no;
 	ev->r.c_session_ret.sid = session->sid;
@@ -1222,6 +1282,8 @@ iscsi_if_create_conn(struct iscsi_transport *transport, struct iscsi_uevent *ev)
 		return -ENOMEM;
 	}
 
+	ISCSI_DBG_TRANS_CONN(conn, "Created transport conn\n");
+
 	ev->r.c_conn_ret.sid = session->sid;
 	ev->r.c_conn_ret.cid = conn->cid;
 	return 0;
@@ -1236,6 +1298,8 @@ iscsi_if_destroy_conn(struct iscsi_transport *transport, struct iscsi_uevent *ev
 	if (!conn)
 		return -EINVAL;
 
+	ISCSI_DBG_TRANS_CONN(conn, "Destroying transport conn\n");
+
 	if (transport->destroy_conn)
 		transport->destroy_conn(conn);
 	return 0;
-- 
1.6.0.4

Reply via email to