diff --git a/lib/nvmf/nvmf.c b/lib/nvmf/nvmf.c index cc5e21652..fee38d083 100644 --- a/lib/nvmf/nvmf.c +++ b/lib/nvmf/nvmf.c @@ -52,8 +52,6 @@ SPDK_LOG_REGISTER_TRACE_FLAG("nvmf", SPDK_TRACE_NVMF) #define SPDK_NVMF_DEFAULT_IN_CAPSULE_DATA_SIZE 4096 #define SPDK_NVMF_DEFAULT_MAX_IO_SIZE 131072 -struct spdk_nvmf_tgt g_nvmf_tgt; - void spdk_nvmf_tgt_opts_init(struct spdk_nvmf_tgt_opts *opts) { @@ -68,7 +66,10 @@ spdk_nvmf_tgt_create(struct spdk_nvmf_tgt_opts *opts) { struct spdk_nvmf_tgt *tgt; - tgt = &g_nvmf_tgt; + tgt = calloc(1, sizeof(*tgt)); + if (!tgt) { + return NULL; + } if (!opts) { spdk_nvmf_tgt_opts_init(&tgt->opts); @@ -102,6 +103,11 @@ spdk_nvmf_tgt_destroy(struct spdk_nvmf_tgt *tgt) TAILQ_REMOVE(&tgt->transports, transport, link); spdk_nvmf_transport_destroy(transport); } + + if (tgt->discovery_log_page) { + free(tgt->discovery_log_page); + } + free(tgt); } int diff --git a/lib/nvmf/nvmf_internal.h b/lib/nvmf/nvmf_internal.h index 4683a5a4e..52af4ada2 100644 --- a/lib/nvmf/nvmf_internal.h +++ b/lib/nvmf/nvmf_internal.h @@ -108,8 +108,6 @@ struct spdk_nvmf_subsystem { TAILQ_ENTRY(spdk_nvmf_subsystem) entries; }; -extern struct spdk_nvmf_tgt g_nvmf_tgt; - uint16_t spdk_nvmf_tgt_gen_cntlid(struct spdk_nvmf_tgt *tgt); struct spdk_nvmf_transport *spdk_nvmf_tgt_get_transport(struct spdk_nvmf_tgt *tgt, diff --git a/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c b/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c index af53c51ba..fcd9d5b1a 100644 --- a/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c +++ b/test/unit/lib/nvmf/ctrlr.c/ctrlr_ut.c @@ -39,8 +39,6 @@ SPDK_LOG_REGISTER_TRACE_FLAG("nvmf", SPDK_TRACE_NVMF) -struct spdk_nvmf_tgt g_nvmf_tgt; - struct spdk_nvmf_subsystem * spdk_nvmf_tgt_find_subsystem(struct spdk_nvmf_tgt *tgt, const char *subnqn) { diff --git a/test/unit/lib/nvmf/ctrlr_discovery.c/ctrlr_discovery_ut.c b/test/unit/lib/nvmf/ctrlr_discovery.c/ctrlr_discovery_ut.c index 511f930a5..9b2c31c13 100644 --- a/test/unit/lib/nvmf/ctrlr_discovery.c/ctrlr_discovery_ut.c +++ b/test/unit/lib/nvmf/ctrlr_discovery.c/ctrlr_discovery_ut.c @@ -39,10 +39,6 @@ SPDK_LOG_REGISTER_TRACE_FLAG("nvmf", SPDK_TRACE_NVMF) -struct spdk_nvmf_tgt g_nvmf_tgt = { - .subsystems = TAILQ_HEAD_INITIALIZER(g_nvmf_tgt.subsystems) -}; - int spdk_bdev_open(struct spdk_bdev *bdev, bool write, spdk_bdev_remove_cb_t remove_cb, void *remove_ctx, struct spdk_bdev_desc **desc) @@ -161,20 +157,17 @@ all_zero(const void *buf, size_t size) static void test_discovery_log(void) { + struct spdk_nvmf_tgt tgt = {}; struct spdk_nvmf_subsystem *subsystem; uint8_t buffer[8192]; struct spdk_nvmf_discovery_log_page *disc_log; struct spdk_nvmf_discovery_log_page_entry *entry; struct spdk_nvme_transport_id trid = {}; - /* Reset discovery-related globals */ - g_nvmf_tgt.discovery_genctr = 0; - free(g_nvmf_tgt.discovery_log_page); - g_nvmf_tgt.discovery_log_page = NULL; - g_nvmf_tgt.discovery_log_page_size = 0; + TAILQ_INIT(&tgt.subsystems); /* Add one subsystem and verify that the discovery log contains it */ - subsystem = spdk_nvmf_create_subsystem(&g_nvmf_tgt, "nqn.2016-06.io.spdk:subsystem1", + subsystem = spdk_nvmf_create_subsystem(&tgt, "nqn.2016-06.io.spdk:subsystem1", SPDK_NVMF_SUBTYPE_NVME, 0, NULL, NULL, NULL); SPDK_CU_ASSERT_FATAL(subsystem != NULL); @@ -188,20 +181,20 @@ test_discovery_log(void) /* Get only genctr (first field in the header) */ memset(buffer, 0xCC, sizeof(buffer)); disc_log = (struct spdk_nvmf_discovery_log_page *)buffer; - spdk_nvmf_get_discovery_log_page(&g_nvmf_tgt, buffer, 0, sizeof(disc_log->genctr)); + spdk_nvmf_get_discovery_log_page(&tgt, buffer, 0, sizeof(disc_log->genctr)); CU_ASSERT(disc_log->genctr == 1); /* one added subsystem */ /* Get only the header, no entries */ memset(buffer, 0xCC, sizeof(buffer)); disc_log = (struct spdk_nvmf_discovery_log_page *)buffer; - spdk_nvmf_get_discovery_log_page(&g_nvmf_tgt, buffer, 0, sizeof(*disc_log)); + spdk_nvmf_get_discovery_log_page(&tgt, buffer, 0, sizeof(*disc_log)); CU_ASSERT(disc_log->genctr == 1); CU_ASSERT(disc_log->numrec == 1); /* Offset 0, exact size match */ memset(buffer, 0xCC, sizeof(buffer)); disc_log = (struct spdk_nvmf_discovery_log_page *)buffer; - spdk_nvmf_get_discovery_log_page(&g_nvmf_tgt, buffer, 0, + spdk_nvmf_get_discovery_log_page(&tgt, buffer, 0, sizeof(*disc_log) + sizeof(disc_log->entries[0])); CU_ASSERT(disc_log->genctr != 0); CU_ASSERT(disc_log->numrec == 1); @@ -210,7 +203,7 @@ test_discovery_log(void) /* Offset 0, oversize buffer */ memset(buffer, 0xCC, sizeof(buffer)); disc_log = (struct spdk_nvmf_discovery_log_page *)buffer; - spdk_nvmf_get_discovery_log_page(&g_nvmf_tgt, buffer, 0, sizeof(buffer)); + spdk_nvmf_get_discovery_log_page(&tgt, buffer, 0, sizeof(buffer)); CU_ASSERT(disc_log->genctr != 0); CU_ASSERT(disc_log->numrec == 1); CU_ASSERT(disc_log->entries[0].trtype == 42); @@ -220,11 +213,12 @@ test_discovery_log(void) /* Get just the first entry, no header */ memset(buffer, 0xCC, sizeof(buffer)); entry = (struct spdk_nvmf_discovery_log_page_entry *)buffer; - spdk_nvmf_get_discovery_log_page(&g_nvmf_tgt, buffer, + spdk_nvmf_get_discovery_log_page(&tgt, buffer, offsetof(struct spdk_nvmf_discovery_log_page, entries[0]), sizeof(*entry)); CU_ASSERT(entry->trtype == 42); spdk_nvmf_delete_subsystem(subsystem); + free(tgt.discovery_log_page); } int main(int argc, char **argv) diff --git a/test/unit/lib/nvmf/subsystem.c/subsystem_ut.c b/test/unit/lib/nvmf/subsystem.c/subsystem_ut.c index 954ce7866..8ef25c418 100644 --- a/test/unit/lib/nvmf/subsystem.c/subsystem_ut.c +++ b/test/unit/lib/nvmf/subsystem.c/subsystem_ut.c @@ -40,8 +40,6 @@ SPDK_LOG_REGISTER_TRACE_FLAG("nvmf", SPDK_TRACE_NVMF) -struct spdk_nvmf_tgt g_nvmf_tgt; - int spdk_nvmf_subsystem_bdev_attach(struct spdk_nvmf_subsystem *subsystem) {