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