From c3dd7e10a7ffdcf01897626fc7077638e1f8c570 Mon Sep 17 00:00:00 2001 From: Tomasz Zawadzki Date: Wed, 14 Oct 2020 05:36:36 -0400 Subject: [PATCH] subsystem/nvmf: move target creation out of conf.c This is a step to prepare for deletion of conf.c. NVMe-oF target application always creates the default 'nvmf_tgt'. This was done as part of legacy configuration parsing, but does not belong there at all. Acceptor poll rate and max subsystems are set via RPC before this step, or via legacy config. Since this patch creates target before parsing the config, options defined there no longer change the target. Parsing of legacy config will be removed further down the series, so no need to refactor to keep the original functionality. Signed-off-by: Tomasz Zawadzki Change-Id: I6f87df0ad3f03b72d6f916de50e5eab6d29dafa9 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4663 Reviewed-by: Ben Walker Reviewed-by: Jim Harris Tested-by: SPDK CI Jenkins --- module/event/subsystems/nvmf/conf.c | 19 ++----------------- module/event/subsystems/nvmf/nvmf_tgt.c | 22 ++++++++++++++++++++-- 2 files changed, 22 insertions(+), 19 deletions(-) diff --git a/module/event/subsystems/nvmf/conf.c b/module/event/subsystems/nvmf/conf.c index 70058c524..d10b5f52a 100644 --- a/module/event/subsystems/nvmf/conf.c +++ b/module/event/subsystems/nvmf/conf.c @@ -43,8 +43,6 @@ #define SPDK_NVMF_MAX_NAMESPACES (1 << 14) -uint32_t g_spdk_nvmf_tgt_max_subsystems = 0; - static int nvmf_add_discovery_subsystem(void) { @@ -161,10 +159,6 @@ nvmf_parse_nvmf_tgt(void) { int rc; int using_deprecated_options; - struct spdk_nvmf_target_opts opts = { - .name = "nvmf_tgt", - .max_subsystems = 0 - }; if (!g_spdk_nvmf_tgt_max_subsystems) { using_deprecated_options = nvmf_parse_tgt_max_subsystems(); @@ -178,22 +172,13 @@ nvmf_parse_nvmf_tgt(void) } } + /* max_subsystems and acceptor_poll_rate options from config file are now disregarded. + * The function bellow does practically nothing. */ if (nvmf_parse_tgt_conf() != 0) { SPDK_ERRLOG("nvmf_parse_tgt_conf() failed\n"); return -1; } - opts.max_subsystems = g_spdk_nvmf_tgt_max_subsystems; - opts.acceptor_poll_rate = g_spdk_nvmf_tgt_conf.acceptor_poll_rate; - g_spdk_nvmf_tgt = spdk_nvmf_tgt_create(&opts); - - g_spdk_nvmf_tgt_max_subsystems = 0; - - if (!g_spdk_nvmf_tgt) { - SPDK_ERRLOG("spdk_nvmf_tgt_create() failed\n"); - return -1; - } - rc = nvmf_add_discovery_subsystem(); if (rc != 0) { SPDK_ERRLOG("nvmf_add_discovery_subsystem failed\n"); diff --git a/module/event/subsystems/nvmf/nvmf_tgt.c b/module/event/subsystems/nvmf/nvmf_tgt.c index 70be97560..eff1c7e61 100644 --- a/module/event/subsystems/nvmf/nvmf_tgt.c +++ b/module/event/subsystems/nvmf/nvmf_tgt.c @@ -66,6 +66,7 @@ struct spdk_nvmf_tgt_conf g_spdk_nvmf_tgt_conf = { }; struct spdk_nvmf_tgt *g_spdk_nvmf_tgt = NULL; +uint32_t g_spdk_nvmf_tgt_max_subsystems = 0; static enum nvmf_tgt_state g_tgt_state; @@ -264,11 +265,28 @@ nvmf_tgt_parse_conf_done(int status) static void nvmf_tgt_parse_conf_start(void *ctx) { + struct spdk_nvmf_target_opts opts = { + .name = "nvmf_tgt" + }; + + opts.max_subsystems = g_spdk_nvmf_tgt_max_subsystems; + opts.acceptor_poll_rate = g_spdk_nvmf_tgt_conf.acceptor_poll_rate; + g_spdk_nvmf_tgt = spdk_nvmf_tgt_create(&opts); + if (!g_spdk_nvmf_tgt) { + SPDK_ERRLOG("spdk_nvmf_tgt_create() failed\n"); + goto error; + } + if (nvmf_parse_conf(nvmf_tgt_parse_conf_done)) { SPDK_ERRLOG("nvmf_parse_conf() failed\n"); - g_tgt_state = NVMF_TGT_ERROR; - nvmf_tgt_advance_state(); + goto error; } + + return; + +error: + g_tgt_state = NVMF_TGT_ERROR; + nvmf_tgt_advance_state(); } static void