Lines Matching refs:sess

173 	struct ft_sess *sess;  in ft_sess_get()  local
181 hlist_for_each_entry_rcu(sess, head, hash) { in ft_sess_get()
182 if (sess->port_id == port_id) { in ft_sess_get()
183 kref_get(&sess->kref); in ft_sess_get()
185 pr_debug("port_id %x found %p\n", port_id, sess); in ft_sess_get()
186 return sess; in ft_sess_get()
202 struct ft_sess *sess; in ft_sess_create() local
206 hlist_for_each_entry_rcu(sess, head, hash) in ft_sess_create()
207 if (sess->port_id == port_id) in ft_sess_create()
208 return sess; in ft_sess_create()
210 sess = kzalloc(sizeof(*sess), GFP_KERNEL); in ft_sess_create()
211 if (!sess) in ft_sess_create()
214 sess->se_sess = transport_init_session_tags(TCM_FC_DEFAULT_TAGS, in ft_sess_create()
217 if (IS_ERR(sess->se_sess)) { in ft_sess_create()
218 kfree(sess); in ft_sess_create()
221 sess->se_sess->se_node_acl = &acl->se_node_acl; in ft_sess_create()
222 sess->tport = tport; in ft_sess_create()
223 sess->port_id = port_id; in ft_sess_create()
224 kref_init(&sess->kref); /* ref for table entry */ in ft_sess_create()
225 hlist_add_head_rcu(&sess->hash, head); in ft_sess_create()
228 pr_debug("port_id %x sess %p\n", port_id, sess); in ft_sess_create()
231 sess->se_sess, sess); in ft_sess_create()
232 return sess; in ft_sess_create()
239 static void ft_sess_unhash(struct ft_sess *sess) in ft_sess_unhash() argument
241 struct ft_tport *tport = sess->tport; in ft_sess_unhash()
243 hlist_del_rcu(&sess->hash); in ft_sess_unhash()
246 sess->port_id = -1; in ft_sess_unhash()
247 sess->params = 0; in ft_sess_unhash()
257 struct ft_sess *sess; in ft_sess_delete() local
260 hlist_for_each_entry_rcu(sess, head, hash) { in ft_sess_delete()
261 if (sess->port_id == port_id) { in ft_sess_delete()
262 ft_sess_unhash(sess); in ft_sess_delete()
263 return sess; in ft_sess_delete()
276 struct ft_sess *sess; in ft_sess_delete_all() local
280 hlist_for_each_entry_rcu(sess, head, hash) { in ft_sess_delete_all()
281 ft_sess_unhash(sess); in ft_sess_delete_all()
282 transport_deregister_session_configfs(sess->se_sess); in ft_sess_delete_all()
283 ft_sess_put(sess); /* release from table */ in ft_sess_delete_all()
298 struct ft_sess *sess = se_sess->fabric_sess_ptr; in ft_sess_shutdown() local
300 pr_debug("port_id %x\n", sess->port_id); in ft_sess_shutdown()
310 struct ft_sess *sess = se_sess->fabric_sess_ptr; in ft_sess_close() local
314 port_id = sess->port_id; in ft_sess_close()
320 ft_sess_unhash(sess); in ft_sess_close()
323 ft_sess_put(sess); in ft_sess_close()
330 struct ft_sess *sess = se_sess->fabric_sess_ptr; in ft_sess_get_index() local
332 return sess->port_id; /* XXX TBD probably not what is needed */ in ft_sess_get_index()
338 struct ft_sess *sess = se_sess->fabric_sess_ptr; in ft_sess_get_port_name() local
340 return ft_format_wwn(buf, len, sess->port_name); in ft_sess_get_port_name()
351 struct ft_sess *sess; in ft_prli_locked() local
384 sess = ft_sess_create(tport, rdata->ids.port_id, acl); in ft_prli_locked()
385 if (!sess) in ft_prli_locked()
387 if (!sess->params) in ft_prli_locked()
389 sess->params = fcp_parm; in ft_prli_locked()
390 sess->port_name = rdata->ids.port_name; in ft_prli_locked()
391 sess->max_frame = rdata->maxframe_size; in ft_prli_locked()
436 struct ft_sess *sess = container_of(kref, struct ft_sess, kref); in ft_sess_free() local
438 transport_deregister_session(sess->se_sess); in ft_sess_free()
439 kfree_rcu(sess, rcu); in ft_sess_free()
442 void ft_sess_put(struct ft_sess *sess) in ft_sess_put() argument
444 int sess_held = atomic_read(&sess->kref.refcount); in ft_sess_put()
447 kref_put(&sess->kref, ft_sess_free); in ft_sess_put()
452 struct ft_sess *sess; in ft_prlo() local
463 sess = ft_sess_delete(tport, rdata->ids.port_id); in ft_prlo()
464 if (!sess) { in ft_prlo()
469 transport_deregister_session_configfs(sess->se_sess); in ft_prlo()
470 ft_sess_put(sess); /* release from table */ in ft_prlo()
481 struct ft_sess *sess; in ft_recv() local
486 sess = ft_sess_get(lport, sid); in ft_recv()
487 if (!sess) { in ft_recv()
493 ft_recv_req(sess, fp); /* must do ft_sess_put() */ in ft_recv()