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
