diff --git a/lib/nvmf/nvmf.c b/lib/nvmf/nvmf.c index 3d43200bf..bd8d59efb 100644 --- a/lib/nvmf/nvmf.c +++ b/lib/nvmf/nvmf.c @@ -58,6 +58,7 @@ spdk_nvmf_tgt_init(uint16_t max_queue_depth, uint16_t max_queues_per_sess, g_nvmf_tgt.max_queue_depth = max_queue_depth; g_nvmf_tgt.in_capsule_data_size = in_capsule_data_size; g_nvmf_tgt.max_io_size = max_io_size; + TAILQ_INIT(&g_nvmf_tgt.subsystems); SPDK_TRACELOG(SPDK_TRACE_NVMF, "Max Queues Per Session: %d\n", max_queues_per_sess); SPDK_TRACELOG(SPDK_TRACE_NVMF, "Max Queue Depth: %d\n", max_queue_depth); diff --git a/lib/nvmf/nvmf_internal.h b/lib/nvmf/nvmf_internal.h index 5c2b0b854..fbb1b9b61 100644 --- a/lib/nvmf/nvmf_internal.h +++ b/lib/nvmf/nvmf_internal.h @@ -47,11 +47,11 @@ #define SPDK_NVMF_DEFAULT_NUM_SESSIONS_PER_LCORE 1 struct spdk_nvmf_tgt { - uint16_t max_queue_depth; - uint16_t max_queues_per_session; - - uint32_t in_capsule_data_size; - uint32_t max_io_size; + uint16_t max_queue_depth; + uint16_t max_queues_per_session; + uint32_t in_capsule_data_size; + uint32_t max_io_size; + TAILQ_HEAD(, spdk_nvmf_subsystem) subsystems; }; extern struct spdk_nvmf_tgt g_nvmf_tgt; diff --git a/lib/nvmf/subsystem.c b/lib/nvmf/subsystem.c index 894a80118..ea483d2a0 100644 --- a/lib/nvmf/subsystem.c +++ b/lib/nvmf/subsystem.c @@ -46,7 +46,6 @@ #include "spdk_internal/bdev.h" #include "spdk_internal/log.h" -static TAILQ_HEAD(, spdk_nvmf_subsystem) g_subsystems = TAILQ_HEAD_INITIALIZER(g_subsystems); static uint64_t g_discovery_genctr = 0; static struct spdk_nvmf_discovery_log_page *g_discovery_log_page = NULL; static size_t g_discovery_log_page_size = 0; @@ -60,7 +59,7 @@ spdk_nvmf_subsystem_exists(const char *subnqn) return false; } - TAILQ_FOREACH(subsystem, &g_subsystems, entries) { + TAILQ_FOREACH(subsystem, &g_nvmf_tgt.subsystems, entries) { if (strcmp(subnqn, subsystem->subnqn) == 0) { return true; } @@ -78,7 +77,7 @@ nvmf_find_subsystem(const char *subnqn) return NULL; } - TAILQ_FOREACH(subsystem, &g_subsystems, entries) { + TAILQ_FOREACH(subsystem, &g_nvmf_tgt.subsystems, entries) { if (strcmp(subnqn, subsystem->subnqn) == 0) { return subsystem; } @@ -93,7 +92,7 @@ spdk_nvmf_find_subsystem_with_cntlid(uint16_t cntlid) struct spdk_nvmf_subsystem *subsystem; struct spdk_nvmf_session *session; - TAILQ_FOREACH(subsystem, &g_subsystems, entries) { + TAILQ_FOREACH(subsystem, &g_nvmf_tgt.subsystems, entries) { TAILQ_FOREACH(session, &subsystem->sessions, link) { if (session->cntlid == cntlid) { return subsystem; @@ -204,7 +203,7 @@ spdk_nvmf_create_subsystem(const char *nqn, subsystem->ops = &spdk_nvmf_virtual_ctrlr_ops; } - TAILQ_INSERT_TAIL(&g_subsystems, subsystem, entries); + TAILQ_INSERT_TAIL(&g_nvmf_tgt.subsystems, subsystem, entries); g_discovery_genctr++; return subsystem; @@ -244,7 +243,7 @@ spdk_nvmf_delete_subsystem(struct spdk_nvmf_subsystem *subsystem) subsystem->ops->detach(subsystem); } - TAILQ_REMOVE(&g_subsystems, subsystem, entries); + TAILQ_REMOVE(&g_nvmf_tgt.subsystems, subsystem, entries); g_discovery_genctr++; free(subsystem); @@ -339,7 +338,7 @@ nvmf_update_discovery_log(void) return; } - TAILQ_FOREACH(subsystem, &g_subsystems, entries) { + TAILQ_FOREACH(subsystem, &g_nvmf_tgt.subsystems, entries) { if (subsystem->subtype == SPDK_NVMF_SUBTYPE_DISCOVERY) { continue; } diff --git a/test/lib/nvmf/subsystem/subsystem_ut.c b/test/lib/nvmf/subsystem/subsystem_ut.c index d3e515d1e..1636ef546 100644 --- a/test/lib/nvmf/subsystem/subsystem_ut.c +++ b/test/lib/nvmf/subsystem/subsystem_ut.c @@ -165,6 +165,7 @@ nvmf_test_create_subsystem(void) { char nqn[256]; struct spdk_nvmf_subsystem *subsystem; + TAILQ_INIT(&g_nvmf_tgt.subsystems); strncpy(nqn, "nqn.2016-06.io.spdk:subsystem1", sizeof(nqn)); subsystem = spdk_nvmf_create_subsystem(nqn, SPDK_NVMF_SUBTYPE_NVME,