mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-09-18 22:14:16 +00:00
target: remove sess_kref and ->shutdown_session
Both of them are unused now that drivers handle any delayed session shutdown internally. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
44f33d0fb5
commit
d94331fab6
4 changed files with 3 additions and 41 deletions
|
@ -340,26 +340,18 @@ static void target_shutdown_sessions(struct se_node_acl *acl)
|
||||||
{
|
{
|
||||||
struct se_session *sess;
|
struct se_session *sess;
|
||||||
unsigned long flags;
|
unsigned long flags;
|
||||||
int ret;
|
|
||||||
|
|
||||||
restart:
|
restart:
|
||||||
spin_lock_irqsave(&acl->nacl_sess_lock, flags);
|
spin_lock_irqsave(&acl->nacl_sess_lock, flags);
|
||||||
list_for_each_entry(sess, &acl->acl_sess_list, sess_acl_list) {
|
list_for_each_entry(sess, &acl->acl_sess_list, sess_acl_list) {
|
||||||
if (sess->sess_tearing_down)
|
if (sess->sess_tearing_down)
|
||||||
continue;
|
continue;
|
||||||
if (!target_get_session(sess))
|
|
||||||
continue;
|
|
||||||
|
|
||||||
list_del_init(&sess->sess_acl_list);
|
list_del_init(&sess->sess_acl_list);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&acl->nacl_sess_lock, flags);
|
spin_unlock_irqrestore(&acl->nacl_sess_lock, flags);
|
||||||
if (acl->se_tpg->se_tpg_tfo->shutdown_session)
|
|
||||||
ret = acl->se_tpg->se_tpg_tfo->shutdown_session(sess);
|
if (acl->se_tpg->se_tpg_tfo->close_session)
|
||||||
else
|
acl->se_tpg->se_tpg_tfo->close_session(sess);
|
||||||
ret = 1;
|
|
||||||
target_put_session(sess);
|
|
||||||
if (ret)
|
|
||||||
target_put_session(sess);
|
|
||||||
goto restart;
|
goto restart;
|
||||||
}
|
}
|
||||||
spin_unlock_irqrestore(&acl->nacl_sess_lock, flags);
|
spin_unlock_irqrestore(&acl->nacl_sess_lock, flags);
|
||||||
|
|
|
@ -239,7 +239,6 @@ struct se_session *transport_init_session(enum target_prot_op sup_prot_ops)
|
||||||
INIT_LIST_HEAD(&se_sess->sess_cmd_list);
|
INIT_LIST_HEAD(&se_sess->sess_cmd_list);
|
||||||
INIT_LIST_HEAD(&se_sess->sess_wait_list);
|
INIT_LIST_HEAD(&se_sess->sess_wait_list);
|
||||||
spin_lock_init(&se_sess->sess_cmd_lock);
|
spin_lock_init(&se_sess->sess_cmd_lock);
|
||||||
kref_init(&se_sess->sess_kref);
|
|
||||||
se_sess->sup_prot_ops = sup_prot_ops;
|
se_sess->sup_prot_ops = sup_prot_ops;
|
||||||
|
|
||||||
return se_sess;
|
return se_sess;
|
||||||
|
@ -430,28 +429,6 @@ target_alloc_session(struct se_portal_group *tpg,
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(target_alloc_session);
|
EXPORT_SYMBOL(target_alloc_session);
|
||||||
|
|
||||||
static void target_release_session(struct kref *kref)
|
|
||||||
{
|
|
||||||
struct se_session *se_sess = container_of(kref,
|
|
||||||
struct se_session, sess_kref);
|
|
||||||
struct se_portal_group *se_tpg = se_sess->se_tpg;
|
|
||||||
|
|
||||||
if (se_tpg->se_tpg_tfo->close_session)
|
|
||||||
se_tpg->se_tpg_tfo->close_session(se_sess);
|
|
||||||
}
|
|
||||||
|
|
||||||
int target_get_session(struct se_session *se_sess)
|
|
||||||
{
|
|
||||||
return kref_get_unless_zero(&se_sess->sess_kref);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(target_get_session);
|
|
||||||
|
|
||||||
void target_put_session(struct se_session *se_sess)
|
|
||||||
{
|
|
||||||
kref_put(&se_sess->sess_kref, target_release_session);
|
|
||||||
}
|
|
||||||
EXPORT_SYMBOL(target_put_session);
|
|
||||||
|
|
||||||
ssize_t target_show_dynamic_sessions(struct se_portal_group *se_tpg, char *page)
|
ssize_t target_show_dynamic_sessions(struct se_portal_group *se_tpg, char *page)
|
||||||
{
|
{
|
||||||
struct se_session *se_sess;
|
struct se_session *se_sess;
|
||||||
|
|
|
@ -602,7 +602,6 @@ struct se_session {
|
||||||
struct list_head sess_cmd_list;
|
struct list_head sess_cmd_list;
|
||||||
struct list_head sess_wait_list;
|
struct list_head sess_wait_list;
|
||||||
spinlock_t sess_cmd_lock;
|
spinlock_t sess_cmd_lock;
|
||||||
struct kref sess_kref;
|
|
||||||
void *sess_cmd_map;
|
void *sess_cmd_map;
|
||||||
struct percpu_ida sess_tag_pool;
|
struct percpu_ida sess_tag_pool;
|
||||||
};
|
};
|
||||||
|
|
|
@ -50,10 +50,6 @@ struct target_core_fabric_ops {
|
||||||
*/
|
*/
|
||||||
int (*check_stop_free)(struct se_cmd *);
|
int (*check_stop_free)(struct se_cmd *);
|
||||||
void (*release_cmd)(struct se_cmd *);
|
void (*release_cmd)(struct se_cmd *);
|
||||||
/*
|
|
||||||
* Called with spin_lock_bh(struct se_portal_group->session_lock held.
|
|
||||||
*/
|
|
||||||
int (*shutdown_session)(struct se_session *);
|
|
||||||
void (*close_session)(struct se_session *);
|
void (*close_session)(struct se_session *);
|
||||||
u32 (*sess_get_index)(struct se_session *);
|
u32 (*sess_get_index)(struct se_session *);
|
||||||
/*
|
/*
|
||||||
|
@ -123,8 +119,6 @@ void __transport_register_session(struct se_portal_group *,
|
||||||
struct se_node_acl *, struct se_session *, void *);
|
struct se_node_acl *, struct se_session *, void *);
|
||||||
void transport_register_session(struct se_portal_group *,
|
void transport_register_session(struct se_portal_group *,
|
||||||
struct se_node_acl *, struct se_session *, void *);
|
struct se_node_acl *, struct se_session *, void *);
|
||||||
int target_get_session(struct se_session *);
|
|
||||||
void target_put_session(struct se_session *);
|
|
||||||
ssize_t target_show_dynamic_sessions(struct se_portal_group *, char *);
|
ssize_t target_show_dynamic_sessions(struct se_portal_group *, char *);
|
||||||
void transport_free_session(struct se_session *);
|
void transport_free_session(struct se_session *);
|
||||||
void target_put_nacl(struct se_node_acl *);
|
void target_put_nacl(struct se_node_acl *);
|
||||||
|
|
Loading…
Add table
Reference in a new issue