From 3a4c101b2d7d562e2e50a793d2ae804924fd655b Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Fri, 22 Jul 2016 15:55:59 -0700 Subject: [PATCH] nvmf: Move detection of 0 connections on a session to session layer This logically belongs inside the session handling code, not in the transport-specific layer. Change-Id: I93b2271f38dbfc742162c98c40acb153c7e9022a Signed-off-by: Ben Walker --- lib/nvmf/rdma.c | 3 --- lib/nvmf/session.c | 7 ++++++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/nvmf/rdma.c b/lib/nvmf/rdma.c index 5c0247a35..0f5b5d16e 100644 --- a/lib/nvmf/rdma.c +++ b/lib/nvmf/rdma.c @@ -668,9 +668,6 @@ spdk_nvmf_handle_disconnect(spdk_event_t event) struct spdk_nvmf_conn *conn = spdk_event_get_arg2(event); nvmf_disconnect(session, conn); - if (session && session->num_connections == 0) { - spdk_nvmf_session_destruct(session); - } } static int diff --git a/lib/nvmf/session.c b/lib/nvmf/session.c index 3ab6c6451..00b2c31e7 100644 --- a/lib/nvmf/session.c +++ b/lib/nvmf/session.c @@ -168,7 +168,7 @@ spdk_nvmf_session_destruct(struct nvmf_session *session) struct spdk_nvmf_conn *conn = TAILQ_FIRST(&session->connections); TAILQ_REMOVE(&session->connections, conn, link); - nvmf_disconnect(conn->sess, conn); + session->num_connections--; conn->transport->conn_fini(conn); } @@ -313,6 +313,11 @@ nvmf_disconnect(struct nvmf_session *session, { session->num_connections--; TAILQ_REMOVE(&session->connections, conn, link); + conn->transport->conn_fini(conn); + + if (session->num_connections == 0) { + spdk_nvmf_session_destruct(session); + } } static uint64_t