Lines Matching refs:sess
167 struct ft_sess *sess; in ft_sess_get() local
175 hlist_for_each_entry_rcu(sess, head, hash) { in ft_sess_get()
176 if (sess->port_id == port_id) { in ft_sess_get()
177 kref_get(&sess->kref); in ft_sess_get()
179 pr_debug("port_id %x found %p\n", port_id, sess); in ft_sess_get()
180 return sess; in ft_sess_get()
196 struct ft_sess *sess; in ft_sess_create() local
200 hlist_for_each_entry_rcu(sess, head, hash) in ft_sess_create()
201 if (sess->port_id == port_id) in ft_sess_create()
202 return sess; in ft_sess_create()
204 sess = kzalloc(sizeof(*sess), GFP_KERNEL); in ft_sess_create()
205 if (!sess) in ft_sess_create()
208 sess->se_sess = transport_init_session_tags(TCM_FC_DEFAULT_TAGS, in ft_sess_create()
211 if (IS_ERR(sess->se_sess)) { in ft_sess_create()
212 kfree(sess); in ft_sess_create()
215 sess->se_sess->se_node_acl = &acl->se_node_acl; in ft_sess_create()
216 sess->tport = tport; in ft_sess_create()
217 sess->port_id = port_id; in ft_sess_create()
218 kref_init(&sess->kref); /* ref for table entry */ in ft_sess_create()
219 hlist_add_head_rcu(&sess->hash, head); in ft_sess_create()
222 pr_debug("port_id %x sess %p\n", port_id, sess); in ft_sess_create()
225 sess->se_sess, sess); in ft_sess_create()
226 return sess; in ft_sess_create()
233 static void ft_sess_unhash(struct ft_sess *sess) in ft_sess_unhash() argument
235 struct ft_tport *tport = sess->tport; in ft_sess_unhash()
237 hlist_del_rcu(&sess->hash); in ft_sess_unhash()
240 sess->port_id = -1; in ft_sess_unhash()
241 sess->params = 0; in ft_sess_unhash()
251 struct ft_sess *sess; in ft_sess_delete() local
254 hlist_for_each_entry_rcu(sess, head, hash) { in ft_sess_delete()
255 if (sess->port_id == port_id) { in ft_sess_delete()
256 ft_sess_unhash(sess); in ft_sess_delete()
257 return sess; in ft_sess_delete()
270 struct ft_sess *sess; in ft_sess_delete_all() local
274 hlist_for_each_entry_rcu(sess, head, hash) { in ft_sess_delete_all()
275 ft_sess_unhash(sess); in ft_sess_delete_all()
276 transport_deregister_session_configfs(sess->se_sess); in ft_sess_delete_all()
277 ft_sess_put(sess); /* release from table */ in ft_sess_delete_all()
292 struct ft_sess *sess = se_sess->fabric_sess_ptr; in ft_sess_shutdown() local
294 pr_debug("port_id %x\n", sess->port_id); in ft_sess_shutdown()
304 struct ft_sess *sess = se_sess->fabric_sess_ptr; in ft_sess_close() local
308 port_id = sess->port_id; in ft_sess_close()
314 ft_sess_unhash(sess); in ft_sess_close()
317 ft_sess_put(sess); in ft_sess_close()
324 struct ft_sess *sess = se_sess->fabric_sess_ptr; in ft_sess_get_index() local
326 return sess->port_id; /* XXX TBD probably not what is needed */ in ft_sess_get_index()
332 struct ft_sess *sess = se_sess->fabric_sess_ptr; in ft_sess_get_port_name() local
334 return ft_format_wwn(buf, len, sess->port_name); in ft_sess_get_port_name()
345 struct ft_sess *sess; in ft_prli_locked() local
378 sess = ft_sess_create(tport, rdata->ids.port_id, acl); in ft_prli_locked()
379 if (!sess) in ft_prli_locked()
381 if (!sess->params) in ft_prli_locked()
383 sess->params = fcp_parm; in ft_prli_locked()
384 sess->port_name = rdata->ids.port_name; in ft_prli_locked()
385 sess->max_frame = rdata->maxframe_size; in ft_prli_locked()
430 struct ft_sess *sess = container_of(kref, struct ft_sess, kref); in ft_sess_free() local
432 transport_deregister_session(sess->se_sess); in ft_sess_free()
433 kfree_rcu(sess, rcu); in ft_sess_free()
436 void ft_sess_put(struct ft_sess *sess) in ft_sess_put() argument
438 int sess_held = atomic_read(&sess->kref.refcount); in ft_sess_put()
441 kref_put(&sess->kref, ft_sess_free); in ft_sess_put()
446 struct ft_sess *sess; in ft_prlo() local
457 sess = ft_sess_delete(tport, rdata->ids.port_id); in ft_prlo()
458 if (!sess) { in ft_prlo()
463 transport_deregister_session_configfs(sess->se_sess); in ft_prlo()
464 ft_sess_put(sess); /* release from table */ in ft_prlo()
475 struct ft_sess *sess; in ft_recv() local
480 sess = ft_sess_get(lport, sid); in ft_recv()
481 if (!sess) { in ft_recv()
487 ft_recv_req(sess, fp); /* must do ft_sess_put() */ in ft_recv()