From: Nicholas Bellinger <n...@linux-iscsi.org>

This patch converts tcm_fc target mode addition of tf_sess->hash to
port_id hlist_head using the new alloc_session callback().

Cc: Vasu Dev <vasu....@linux.intel.com>
Cc: Mark Rustad <mark.d.rus...@intel.com>
Cc: Robert Love <robert.w.l...@intel.com>
Signed-off-by: Nicholas Bellinger <n...@linux-iscsi.org>
---
 drivers/target/tcm_fc/tfc_sess.c | 44 ++++++++++++++++++++--------------------
 1 file changed, 22 insertions(+), 22 deletions(-)

diff --git a/drivers/target/tcm_fc/tfc_sess.c b/drivers/target/tcm_fc/tfc_sess.c
index e19f4c5..d0c3e18 100644
--- a/drivers/target/tcm_fc/tfc_sess.c
+++ b/drivers/target/tcm_fc/tfc_sess.c
@@ -186,6 +186,20 @@ out:
        return NULL;
 }
 
+static int ft_sess_alloc_cb(struct se_portal_group *se_tpg,
+                           struct se_session *se_sess, void *p)
+{
+       struct ft_sess *sess = p;
+       struct ft_tport *tport = sess->tport;
+       struct hlist_head *head = &tport->hash[ft_sess_hash(sess->port_id)];
+
+       pr_debug("port_id %x sess %p\n", sess->port_id, sess);
+       hlist_add_head_rcu(&sess->hash, head);
+       tport->sess_count++;
+
+       return 0;
+}
+
 /*
  * Allocate session and enter it in the hash for the local port.
  * Caller holds ft_lport_lock.
@@ -194,7 +208,6 @@ static struct ft_sess *ft_sess_create(struct ft_tport 
*tport, u32 port_id,
                                      struct fc_rport_priv *rdata)
 {
        struct se_portal_group *se_tpg = &tport->tpg->se_tpg;
-       struct se_node_acl *se_acl;
        struct ft_sess *sess;
        struct hlist_head *head;
        unsigned char initiatorname[TRANSPORT_IQN_LEN];
@@ -210,31 +223,18 @@ static struct ft_sess *ft_sess_create(struct ft_tport 
*tport, u32 port_id,
        if (!sess)
                return NULL;
 
-       sess->se_sess = transport_init_session_tags(TCM_FC_DEFAULT_TAGS,
-                                                   sizeof(struct ft_cmd),
-                                                   TARGET_PROT_NORMAL);
-       if (IS_ERR(sess->se_sess)) {
-               kfree(sess);
-               return NULL;
-       }
+       kref_init(&sess->kref); /* ref for table entry */
+       sess->tport = tport;
+       sess->port_id = port_id;
 
-       se_acl = core_tpg_get_initiator_node_acl(se_tpg, &initiatorname[0]);
-       if (!se_acl) {
-               transport_free_session(sess->se_sess);
+       sess->se_sess = target_alloc_session(se_tpg, TCM_FC_DEFAULT_TAGS,
+                                            sizeof(struct ft_cmd),
+                                            TARGET_PROT_NORMAL, 
&initiatorname[0],
+                                            sess, ft_sess_alloc_cb);
+       if (IS_ERR(sess->se_sess)) {
                kfree(sess);
                return NULL;
        }
-       sess->se_sess->se_node_acl = se_acl;
-       sess->tport = tport;
-       sess->port_id = port_id;
-       kref_init(&sess->kref); /* ref for table entry */
-       hlist_add_head_rcu(&sess->hash, head);
-       tport->sess_count++;
-
-       pr_debug("port_id %x sess %p\n", port_id, sess);
-
-       transport_register_session(&tport->tpg->se_tpg, se_acl,
-                                  sess->se_sess, sess);
        return sess;
 }
 
-- 
1.9.1

--
To unsubscribe from this list: send the line "unsubscribe linux-scsi" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to