Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d94331fa authored by Christoph Hellwig's avatar Christoph Hellwig Committed by Nicholas Bellinger
Browse files

target: remove sess_kref and ->shutdown_session



Both of them are unused now that drivers handle any delayed session
shutdown internally.

Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Signed-off-by: default avatarNicholas Bellinger <nab@linux-iscsi.org>
parent 44f33d0f
Loading
Loading
Loading
Loading
+3 −11
Original line number Diff line number Diff line
@@ -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);
+0 −23
Original line number Diff line number Diff line
@@ -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;
+0 −1
Original line number Diff line number Diff line
@@ -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;
};
+0 −6
Original line number Diff line number Diff line
@@ -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 *);