From 4addb5c899137fa34b64264d4ef817955fc4e58d Mon Sep 17 00:00:00 2001 From: Ben Walker Date: Fri, 18 Aug 2017 15:57:03 -0700 Subject: [PATCH] nvmf: spdk_nvmf_tgt_create_subsystem takes a tgt parameter The user can now specify which target to create the subsystem on. Change-Id: I6206c0d762d59ff6312cb58d36180281baaa7266 Signed-off-by: Ben Walker Reviewed-on: https://review.gerrithub.io/374878 Tested-by: SPDK Automated Test System Reviewed-by: Jim Harris Reviewed-by: Daniel Verkamp --- app/nvmf_tgt/nvmf_tgt.c | 2 +- include/spdk/nvmf.h | 3 ++- lib/nvmf/subsystem.c | 13 +++++++------ .../lib/nvmf/ctrlr_discovery.c/ctrlr_discovery_ut.c | 3 ++- test/unit/lib/nvmf/subsystem.c/subsystem_ut.c | 9 +++++---- 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/app/nvmf_tgt/nvmf_tgt.c b/app/nvmf_tgt/nvmf_tgt.c index e2768c77a..20caa74eb 100644 --- a/app/nvmf_tgt/nvmf_tgt.c +++ b/app/nvmf_tgt/nvmf_tgt.c @@ -202,7 +202,7 @@ nvmf_tgt_create_subsystem(const char *name, enum spdk_nvmf_subtype subtype, return NULL; } - subsystem = spdk_nvmf_create_subsystem(name, subtype, app_subsys, connect_cb, + subsystem = spdk_nvmf_create_subsystem(g_tgt, name, subtype, app_subsys, connect_cb, disconnect_cb); if (subsystem == NULL) { SPDK_ERRLOG("Subsystem creation failed\n"); diff --git a/include/spdk/nvmf.h b/include/spdk/nvmf.h index 5e4a855aa..5d7fff4da 100644 --- a/include/spdk/nvmf.h +++ b/include/spdk/nvmf.h @@ -98,7 +98,8 @@ struct spdk_nvmf_listen_addr { * of controllers. Any individual controller has * access to all the NVMe device/namespaces maintained by the subsystem. */ -struct spdk_nvmf_subsystem *spdk_nvmf_create_subsystem(const char *nqn, +struct spdk_nvmf_subsystem *spdk_nvmf_create_subsystem(struct spdk_nvmf_tgt *tgt, + const char *nqn, enum spdk_nvmf_subtype type, void *cb_ctx, spdk_nvmf_subsystem_connect_fn connect_cb, diff --git a/lib/nvmf/subsystem.c b/lib/nvmf/subsystem.c index 53dbfc6c4..65d6fd87e 100644 --- a/lib/nvmf/subsystem.c +++ b/lib/nvmf/subsystem.c @@ -148,7 +148,8 @@ spdk_nvmf_valid_nqn(const char *nqn) } struct spdk_nvmf_subsystem * -spdk_nvmf_create_subsystem(const char *nqn, +spdk_nvmf_create_subsystem(struct spdk_nvmf_tgt *tgt, + const char *nqn, enum spdk_nvmf_subtype type, void *cb_ctx, spdk_nvmf_subsystem_connect_fn connect_cb, @@ -165,11 +166,11 @@ spdk_nvmf_create_subsystem(const char *nqn, return NULL; } - subsystem->tgt = &g_nvmf_tgt; + subsystem->tgt = tgt; - subsystem->tgt->current_subsystem_id++; + tgt->current_subsystem_id++; - subsystem->id = subsystem->tgt->current_subsystem_id; + subsystem->id = tgt->current_subsystem_id; subsystem->subtype = type; subsystem->cb_ctx = cb_ctx; subsystem->connect_cb = connect_cb; @@ -179,8 +180,8 @@ spdk_nvmf_create_subsystem(const char *nqn, TAILQ_INIT(&subsystem->hosts); TAILQ_INIT(&subsystem->ctrlrs); - TAILQ_INSERT_TAIL(&subsystem->tgt->subsystems, subsystem, entries); - subsystem->tgt->discovery_genctr++; + TAILQ_INSERT_TAIL(&tgt->subsystems, subsystem, entries); + tgt->discovery_genctr++; return subsystem; } 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 bbcf77025..864ded7ea 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 @@ -196,7 +196,8 @@ test_discovery_log(void) g_nvmf_tgt.discovery_log_page_size = 0; /* Add one subsystem and verify that the discovery log contains it */ - subsystem = spdk_nvmf_create_subsystem("nqn.2016-06.io.spdk:subsystem1", SPDK_NVMF_SUBTYPE_NVME, + subsystem = spdk_nvmf_create_subsystem(&g_nvmf_tgt, "nqn.2016-06.io.spdk:subsystem1", + SPDK_NVMF_SUBTYPE_NVME, NULL, NULL, NULL); SPDK_CU_ASSERT_FATAL(subsystem != NULL); diff --git a/test/unit/lib/nvmf/subsystem.c/subsystem_ut.c b/test/unit/lib/nvmf/subsystem.c/subsystem_ut.c index cdeda37d6..c1b7d5a8c 100644 --- a/test/unit/lib/nvmf/subsystem.c/subsystem_ut.c +++ b/test/unit/lib/nvmf/subsystem.c/subsystem_ut.c @@ -240,12 +240,13 @@ test_spdk_nvmf_subsystem_add_ns(void) static void nvmf_test_create_subsystem(void) { + struct spdk_nvmf_tgt tgt = {}; char nqn[256]; struct spdk_nvmf_subsystem *subsystem; - TAILQ_INIT(&g_nvmf_tgt.subsystems); + TAILQ_INIT(&tgt.subsystems); strncpy(nqn, "nqn.2016-06.io.spdk:subsystem1", sizeof(nqn)); - subsystem = spdk_nvmf_create_subsystem(nqn, SPDK_NVMF_SUBTYPE_NVME, + subsystem = spdk_nvmf_create_subsystem(&tgt, nqn, SPDK_NVMF_SUBTYPE_NVME, NULL, NULL, NULL); SPDK_CU_ASSERT_FATAL(subsystem != NULL); CU_ASSERT_STRING_EQUAL(subsystem->subnqn, nqn); @@ -256,7 +257,7 @@ nvmf_test_create_subsystem(void) memset(nqn + strlen(nqn), 'a', 223 - strlen(nqn)); nqn[223] = '\0'; CU_ASSERT(strlen(nqn) == 223); - subsystem = spdk_nvmf_create_subsystem(nqn, SPDK_NVMF_SUBTYPE_NVME, + subsystem = spdk_nvmf_create_subsystem(&tgt, nqn, SPDK_NVMF_SUBTYPE_NVME, NULL, NULL, NULL); SPDK_CU_ASSERT_FATAL(subsystem != NULL); CU_ASSERT_STRING_EQUAL(subsystem->subnqn, nqn); @@ -267,7 +268,7 @@ nvmf_test_create_subsystem(void) memset(nqn + strlen(nqn), 'a', 224 - strlen(nqn)); nqn[224] = '\0'; CU_ASSERT(strlen(nqn) == 224); - subsystem = spdk_nvmf_create_subsystem(nqn, SPDK_NVMF_SUBTYPE_NVME, + subsystem = spdk_nvmf_create_subsystem(&tgt, nqn, SPDK_NVMF_SUBTYPE_NVME, NULL, NULL, NULL); CU_ASSERT(subsystem == NULL); }