diff --git a/include/spdk/nvmf.h b/include/spdk/nvmf.h index 5540f1b7a5..02dfddf9cb 100644 --- a/include/spdk/nvmf.h +++ b/include/spdk/nvmf.h @@ -126,6 +126,7 @@ struct spdk_nvmf_subsystem_allowed_listener { * access to all the NVMe device/namespaces maintained by the subsystem. */ struct spdk_nvmf_subsystem { + uint32_t id; uint32_t lcore; char subnqn[SPDK_NVMF_NQN_MAX_LEN]; enum spdk_nvmf_subsystem_mode mode; diff --git a/lib/nvmf/nvmf.c b/lib/nvmf/nvmf.c index db3bb68de2..2bd4c0ae17 100644 --- a/lib/nvmf/nvmf.c +++ b/lib/nvmf/nvmf.c @@ -61,6 +61,7 @@ spdk_nvmf_tgt_init(uint16_t max_queue_depth, uint16_t max_queues_per_sess, g_nvmf_tgt.discovery_genctr = 0; g_nvmf_tgt.discovery_log_page = NULL; g_nvmf_tgt.discovery_log_page_size = 0; + g_nvmf_tgt.current_subsystem_id = 0; TAILQ_INIT(&g_nvmf_tgt.subsystems); TAILQ_INIT(&g_nvmf_tgt.listen_addrs); diff --git a/lib/nvmf/nvmf_internal.h b/lib/nvmf/nvmf_internal.h index e87f2c8c7d..214fe4be93 100644 --- a/lib/nvmf/nvmf_internal.h +++ b/lib/nvmf/nvmf_internal.h @@ -56,6 +56,7 @@ struct spdk_nvmf_tgt { struct spdk_nvmf_discovery_log_page *discovery_log_page; size_t discovery_log_page_size; TAILQ_HEAD(, spdk_nvmf_listen_addr) listen_addrs; + uint32_t current_subsystem_id; }; extern struct spdk_nvmf_tgt g_nvmf_tgt; diff --git a/lib/nvmf/subsystem.c b/lib/nvmf/subsystem.c index 6176ede479..17e85ec2f9 100644 --- a/lib/nvmf/subsystem.c +++ b/lib/nvmf/subsystem.c @@ -193,6 +193,9 @@ spdk_nvmf_create_subsystem(const char *nqn, return NULL; } + g_nvmf_tgt.current_subsystem_id++; + + subsystem->id = g_nvmf_tgt.current_subsystem_id; subsystem->subtype = type; subsystem->mode = mode; subsystem->cb_ctx = cb_ctx;