diff --git a/lib/nvmf/subsystem.c b/lib/nvmf/subsystem.c index a9625ee19..15417156a 100644 --- a/lib/nvmf/subsystem.c +++ b/lib/nvmf/subsystem.c @@ -87,6 +87,23 @@ nvmf_find_subsystem(const char *subnqn) return NULL; } +struct spdk_nvmf_subsystem * +spdk_nvmf_find_subsystem_with_cntlid(uint16_t cntlid) +{ + struct spdk_nvmf_subsystem *subsystem; + struct spdk_nvmf_session *session; + + TAILQ_FOREACH(subsystem, &g_subsystems, entries) { + TAILQ_FOREACH(session, &subsystem->sessions, link) { + if (session->cntlid == cntlid) { + return subsystem; + } + } + } + + return NULL; +} + bool spdk_nvmf_subsystem_host_allowed(struct spdk_nvmf_subsystem *subsystem, const char *hostnqn) { diff --git a/lib/nvmf/subsystem.h b/lib/nvmf/subsystem.h index 9b2ec125d..e23fd8b34 100644 --- a/lib/nvmf/subsystem.h +++ b/lib/nvmf/subsystem.h @@ -39,6 +39,8 @@ #include "spdk/nvme.h" #include "spdk/nvmf.h" +struct spdk_nvmf_subsystem *spdk_nvmf_find_subsystem_with_cntlid(uint16_t cntlid); + void spdk_nvmf_get_discovery_log_page(void *buffer, uint64_t offset, uint32_t length); extern const struct spdk_nvmf_ctrlr_ops spdk_nvmf_direct_ctrlr_ops;