diff --git a/include/spdk/nvme.h b/include/spdk/nvme.h index 1180e7fdc..bd4c56c5b 100644 --- a/include/spdk/nvme.h +++ b/include/spdk/nvme.h @@ -1889,6 +1889,18 @@ uint32_t spdk_nvme_ns_get_md_size(struct spdk_nvme_ns *ns); */ bool spdk_nvme_ns_supports_extended_lba(struct spdk_nvme_ns *ns); +/** + * Check whether if the namespace supports compare operation + * + * 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 true if the namespace supports compare operation, or false otherwise. + */ +bool spdk_nvme_ns_supports_compare(struct spdk_nvme_ns *ns); + /** * Determine the value returned when reading deallocated blocks. * diff --git a/lib/nvme/nvme_ns.c b/lib/nvme/nvme_ns.c index 095f0829a..01ce80b32 100644 --- a/lib/nvme/nvme_ns.c +++ b/lib/nvme/nvme_ns.c @@ -250,6 +250,12 @@ spdk_nvme_ns_supports_extended_lba(struct spdk_nvme_ns *ns) return (ns->flags & SPDK_NVME_NS_EXTENDED_LBA_SUPPORTED) ? true : false; } +bool +spdk_nvme_ns_supports_compare(struct spdk_nvme_ns *ns) +{ + return (ns->flags & SPDK_NVME_NS_COMPARE_SUPPORTED) ? true : false; +} + uint32_t spdk_nvme_ns_get_md_size(struct spdk_nvme_ns *ns) {