nvmf: update nvmf_disconnect to spdk_nvmf_session_disconnect

1 Rename this function and make it more meaninful, since
we have spdk_nvmf_session_connect which is used to link a
connection to the session
2 split spdk_nvmf_session_destruct.

Change-Id: I150df7ccdf4de3428d8cecbb286d5f7944510a8c
Signed-off-by: Ziye Yang <ziye.yang@intel.com>
This commit is contained in:
Ziye Yang 2016-09-12 13:13:12 +08:00 committed by Daniel Verkamp
parent b3ca958328
commit 6a6ef0d7e0
5 changed files with 18 additions and 17 deletions

View File

@ -172,7 +172,7 @@ disconnect_event(struct spdk_event *event)
{
struct spdk_nvmf_conn *conn = spdk_event_get_arg1(event);
spdk_nvmf_handle_disconnect(conn);
spdk_nvmf_session_disconnect(conn);
}
static void

View File

@ -156,11 +156,16 @@ nvmf_init_nvme_session_properties(struct nvmf_session *session)
session->vcprop.csts.raw);
}
static void session_destruct(struct nvmf_session *session)
{
session->subsys->session = NULL;
session->transport->session_fini(session);
free(session);
}
void
spdk_nvmf_session_destruct(struct nvmf_session *session)
{
session->subsys->session = NULL;
while (!TAILQ_EMPTY(&session->connections)) {
struct spdk_nvmf_conn *conn = TAILQ_FIRST(&session->connections);
@ -169,9 +174,7 @@ spdk_nvmf_session_destruct(struct nvmf_session *session)
conn->transport->conn_fini(conn);
}
session->transport->session_fini(session);
free(session);
session_destruct(session);
}
static void
@ -327,16 +330,17 @@ spdk_nvmf_session_connect(struct spdk_nvmf_conn *conn,
}
void
spdk_nvmf_handle_disconnect(struct spdk_nvmf_conn *conn)
spdk_nvmf_session_disconnect(struct spdk_nvmf_conn *conn)
{
struct nvmf_session *session = conn->sess;
assert(session != NULL);
session->num_connections--;
TAILQ_REMOVE(&session->connections, conn, link);
conn->transport->conn_fini(conn);
if (session->num_connections == 0) {
spdk_nvmf_session_destruct(session);
session_destruct(session);
}
}
@ -556,7 +560,7 @@ spdk_nvmf_session_poll(struct nvmf_session *session)
TAILQ_FOREACH_SAFE(conn, &session->connections, link, tmp) {
if (conn->transport->conn_poll(conn) < 0) {
SPDK_ERRLOG("Transport poll failed for conn %p; closing connection\n", conn);
spdk_nvmf_handle_disconnect(conn);
spdk_nvmf_session_disconnect(conn);
}
}

View File

@ -93,7 +93,8 @@ void spdk_nvmf_session_connect(struct spdk_nvmf_conn *conn,
struct spdk_nvmf_fabric_connect_data *data,
struct spdk_nvmf_fabric_connect_rsp *rsp);
void spdk_nvmf_handle_disconnect(struct spdk_nvmf_conn *conn);
void
spdk_nvmf_session_disconnect(struct spdk_nvmf_conn *conn);
void
nvmf_property_get(struct nvmf_session *session,

View File

@ -964,15 +964,11 @@ nvmf_test_disconnect(void)
struct spdk_nvmf_subsystem *subsystem;
sess = nvmf_find_session_by_id("subsystem1", SS_SC_CNTLID);
/* delete non-exist connection */
nvmf_disconnect((void *)6, sess);
/* we have two connections admin and io */
CU_ASSERT_EQUAL(sess->num_connections, 2);
/* delete IO connection */
nvmf_disconnect((void *)fabric_conn_IO, sess);
spdk_nvmf_session_disconnect((void *)fabric_conn_IO);
CU_ASSERT_EQUAL(sess->num_connections, 1);
/* delete admin connection */
nvmf_disconnect((void *)fabric_conn_admin, sess);
spdk_nvmf_session_disconnect((void *)fabric_conn_admin);
subsystem = nvmf_find_subsystem("subsystem1");
CU_ASSERT_EQUAL(subsystem->num_sessions, 0);
}

View File

@ -111,7 +111,7 @@ struct spdk_nvme_ns *spdk_nvme_ctrlr_get_ns(struct spdk_nvme_ctrlr *ctrlr, uint3
}
void
spdk_nvmf_handle_disconnect(struct spdk_nvmf_conn *conn)
spdk_nvmf_session_disconnect(struct spdk_nvmf_conn *conn)
{
}