From 7b232057d0242695964d86a52d0e7c7f9ceaf90e Mon Sep 17 00:00:00 2001 From: Hannes Reinecke Date: Fri, 11 Mar 2022 09:06:36 +0100 Subject: [PATCH] tree: add nvme_ctrl_get_ana_state() Add a function to return the ANA state of a namespace on a given controller. Signed-off-by: Hannes Reinecke --- src/libnvme.map | 1 + src/nvme/tree.c | 13 +++++++++++++ src/nvme/tree.h | 9 +++++++++ 3 files changed, 23 insertions(+) diff --git a/src/libnvme.map b/src/libnvme.map index c5a67209..7463174c 100644 --- a/src/libnvme.map +++ b/src/libnvme.map @@ -12,6 +12,7 @@ LIBNVME_1_0 { nvme_ctrl_first_ns; nvme_ctrl_first_path; nvme_ctrl_get_address; + nvme_ctrl_get_ana_state; nvme_ctrl_get_dhchap_key; nvme_ctrl_get_discovery_ctrl; nvme_ctrl_get_fd; diff --git a/src/nvme/tree.c b/src/nvme/tree.c index 3e95fb0a..47e22ed3 100644 --- a/src/nvme/tree.c +++ b/src/nvme/tree.c @@ -768,6 +768,19 @@ const char *nvme_ctrl_get_host_iface(nvme_ctrl_t c) return c->cfg.host_iface; } +const char *nvme_ctrl_get_ana_state(nvme_ctrl_t c, __u32 nsid) +{ + if (nsid != NVME_NSID_ALL) { + nvme_path_t p; + + nvme_ctrl_for_each_path(c, p) { + if (p->n && p->n->nsid == nsid) + return p->ana_state; + } + } + return NULL; +} + struct nvme_fabrics_config *nvme_ctrl_get_config(nvme_ctrl_t c) { return &c->cfg; diff --git a/src/nvme/tree.h b/src/nvme/tree.h index 8bd20e55..daed3a11 100644 --- a/src/nvme/tree.h +++ b/src/nvme/tree.h @@ -836,6 +836,15 @@ const char *nvme_ctrl_get_host_traddr(nvme_ctrl_t c); */ const char *nvme_ctrl_get_host_iface(nvme_ctrl_t c); +/** + * nvme_ctrl_get_ana_state() - ANA state of a controller path + * @c: Constroller instance + * @nsid: Namespace ID to evaluate + * + * Return: ANA state of the namespace @nsid on controller @c. + */ +const char *nvme_ctrl_get_ana_state(nvme_ctrl_t c, __u32 nsid); + /** * nvme_ctrl_get_dhchap_key() - Return controller key * @c: Controller for which the key should be set -- 2.50.1