mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-09 14:50:19 +00:00
target: Add TFO->put_session() caller for HW fabric session shutdown
This patch adds an optional target_core_fabric_ops->put_session() caller within the existing target_put_session() code path. This is required by tcm_qla2xxx code in order to invoke it's own fabric specific session shutdown handler using se_session->sess_kref. Signed-off-by: Joern Engel <joern@logfs.org> Cc: Roland Dreier <roland@purestorage.com> Cc: Arun Easi <arun.easi@qlogic.com> Signed-off-by: Nicholas Bellinger <nab@linux-iscsi.org>
This commit is contained in:
parent
cfaf025112
commit
4149268e78
@ -315,7 +315,7 @@ void transport_register_session(
|
|||||||
}
|
}
|
||||||
EXPORT_SYMBOL(transport_register_session);
|
EXPORT_SYMBOL(transport_register_session);
|
||||||
|
|
||||||
static void target_release_session(struct kref *kref)
|
void target_release_session(struct kref *kref)
|
||||||
{
|
{
|
||||||
struct se_session *se_sess = container_of(kref,
|
struct se_session *se_sess = container_of(kref,
|
||||||
struct se_session, sess_kref);
|
struct se_session, sess_kref);
|
||||||
@ -332,6 +332,12 @@ EXPORT_SYMBOL(target_get_session);
|
|||||||
|
|
||||||
void target_put_session(struct se_session *se_sess)
|
void target_put_session(struct se_session *se_sess)
|
||||||
{
|
{
|
||||||
|
struct se_portal_group *tpg = se_sess->se_tpg;
|
||||||
|
|
||||||
|
if (tpg->se_tpg_tfo->put_session != NULL) {
|
||||||
|
tpg->se_tpg_tfo->put_session(se_sess);
|
||||||
|
return;
|
||||||
|
}
|
||||||
kref_put(&se_sess->sess_kref, target_release_session);
|
kref_put(&se_sess->sess_kref, target_release_session);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL(target_put_session);
|
EXPORT_SYMBOL(target_put_session);
|
||||||
|
@ -47,6 +47,7 @@ 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 *);
|
||||||
|
void (*put_session)(struct se_session *);
|
||||||
/*
|
/*
|
||||||
* Called with spin_lock_bh(struct se_portal_group->session_lock held.
|
* Called with spin_lock_bh(struct se_portal_group->session_lock held.
|
||||||
*/
|
*/
|
||||||
|
Loading…
x
Reference in New Issue
Block a user