Commit 6a6ef0d7 authored by Ziye Yang's avatar Ziye Yang Committed by Daniel Verkamp
Browse files

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: default avatarZiye Yang <ziye.yang@intel.com>
parent b3ca9583
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -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
+12 −8
Original line number Diff line number Diff line
@@ -156,11 +156,16 @@ nvmf_init_nvme_session_properties(struct nvmf_session *session)
		      session->vcprop.csts.raw);
}

void
spdk_nvmf_session_destruct(struct nvmf_session *session)
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)
{
	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);
		}
	}

+2 −1
Original line number Diff line number Diff line
@@ -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,
+2 −6
Original line number Diff line number Diff line
@@ -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);
}
+1 −1
Original line number Diff line number Diff line
@@ -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)
{
}