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:
Родитель
cfaf025112
Коммит
4149268e78
|
@ -315,7 +315,7 @@ void 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, sess_kref);
|
||||
|
@ -332,6 +332,12 @@ EXPORT_SYMBOL(target_get_session);
|
|||
|
||||
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);
|
||||
}
|
||||
EXPORT_SYMBOL(target_put_session);
|
||||
|
|
|
@ -47,6 +47,7 @@ struct target_core_fabric_ops {
|
|||
*/
|
||||
int (*check_stop_free)(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.
|
||||
*/
|
||||
|
|
Загрузка…
Ссылка в новой задаче