diff --git a/include/spdk/nvme.h b/include/spdk/nvme.h index 30d7360e2..f2ed4189c 100644 --- a/include/spdk/nvme.h +++ b/include/spdk/nvme.h @@ -2334,6 +2334,36 @@ enum spdk_nvme_ns_flags { */ uint32_t spdk_nvme_ns_get_flags(struct spdk_nvme_ns *ns); +/** + * Get the ANA group ID for the given namespace. + * + * This function should be called only if spdk_nvme_ctrlr_is_log_page_supported() returns + * true for the controller and log page ID SPDK_NVME_LOG_ASYMMETRIC_NAMESPACE_ACCESS. + * + * This function is thread safe and can be called at any point while the controller + * is attached to the SPDK NVMe driver. + * + * \param ns Namespace to query. + * + * \return the ANA group ID for the given namespace. + */ +uint32_t spdk_nvme_ns_get_ana_group_id(const struct spdk_nvme_ns *ns); + +/** + * Get the ANA state for the given namespace. + * + * This function should be called only if spdk_nvme_ctrlr_is_log_page_supported() returns + * true for the controller and log page ID SPDK_NVME_LOG_ASYMMETRIC_NAMESPACE_ACCESS. + * + * This function is thread safe and can be called at any point while the controller + * is attached to the SPDK NVMe driver. + * + * \param ns Namespace to query. + * + * \return the ANA state for the given namespace. + */ +enum spdk_nvme_ana_state spdk_nvme_ns_get_ana_state(const struct spdk_nvme_ns *ns); + /** * Restart the SGL walk to the specified offset when the command has scattered payloads. * diff --git a/lib/nvme/nvme_ns.c b/lib/nvme/nvme_ns.c index e206b51d5..19008bcff 100644 --- a/lib/nvme/nvme_ns.c +++ b/lib/nvme/nvme_ns.c @@ -397,6 +397,17 @@ spdk_nvme_ns_get_csi(const struct spdk_nvme_ns *ns) { return ns->csi; } +uint32_t +spdk_nvme_ns_get_ana_group_id(const struct spdk_nvme_ns *ns) +{ + return ns->ana_group_id; +} + +enum spdk_nvme_ana_state +spdk_nvme_ns_get_ana_state(const struct spdk_nvme_ns *ns) { + return ns->ana_state; +} + int nvme_ns_construct(struct spdk_nvme_ns *ns, uint32_t id, struct spdk_nvme_ctrlr *ctrlr) { diff --git a/lib/nvme/spdk_nvme.map b/lib/nvme/spdk_nvme.map index b110f7f30..08f98abe9 100644 --- a/lib/nvme/spdk_nvme.map +++ b/lib/nvme/spdk_nvme.map @@ -111,6 +111,8 @@ spdk_nvme_ns_get_uuid; spdk_nvme_ns_get_csi; spdk_nvme_ns_get_flags; + spdk_nvme_ns_get_ana_group_id; + spdk_nvme_ns_get_ana_state; spdk_nvme_ns_cmd_write; spdk_nvme_ns_cmd_writev;