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:
Родитель
44f33d0fb5
Коммит
d94331fab6
|
@ -340,26 +340,18 @@ static void target_shutdown_sessions(struct se_node_acl *acl)
|
|||
{
|
||||
struct se_session *sess;
|
||||
unsigned long flags;
|
||||
int ret;
|
||||
|
||||
restart:
|
||||
spin_lock_irqsave(&acl->nacl_sess_lock, flags);
|
||||
list_for_each_entry(sess, &acl->acl_sess_list, sess_acl_list) {
|
||||
if (sess->sess_tearing_down)
|
||||
continue;
|
||||
if (!target_get_session(sess))
|
||||
continue;
|
||||
|
||||
list_del_init(&sess->sess_acl_list);
|
||||
|
||||
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);
|
||||
else
|
||||
ret = 1;
|
||||
target_put_session(sess);
|
||||
if (ret)
|
||||
target_put_session(sess);
|
||||
|
||||
if (acl->se_tpg->se_tpg_tfo->close_session)
|
||||
acl->se_tpg->se_tpg_tfo->close_session(sess);
|
||||
goto restart;
|
||||
}
|
||||
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_wait_list);
|
||||
spin_lock_init(&se_sess->sess_cmd_lock);
|
||||
kref_init(&se_sess->sess_kref);
|
||||
se_sess->sup_prot_ops = sup_prot_ops;
|
||||
|
||||
return se_sess;
|
||||
|
@ -430,28 +429,6 @@ target_alloc_session(struct se_portal_group *tpg,
|
|||
}
|
||||
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)
|
||||
{
|
||||
struct se_session *se_sess;
|
||||
|
|
|
@ -602,7 +602,6 @@ struct se_session {
|
|||
struct list_head sess_cmd_list;
|
||||
struct list_head sess_wait_list;
|
||||
spinlock_t sess_cmd_lock;
|
||||
struct kref sess_kref;
|
||||
void *sess_cmd_map;
|
||||
struct percpu_ida sess_tag_pool;
|
||||
};
|
||||
|
|
|
@ -50,10 +50,6 @@ struct target_core_fabric_ops {
|
|||
*/
|
||||
int (*check_stop_free)(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 *);
|
||||
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 *);
|
||||
void transport_register_session(struct se_portal_group *,
|
||||
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 *);
|
||||
void transport_free_session(struct se_session *);
|
||||
void target_put_nacl(struct se_node_acl *);
|
||||
|
|
Загрузка…
Ссылка в новой задаче