diff --git a/include/spdk/bdev.h b/include/spdk/bdev.h index 4bf4810b4..59e4e4d00 100644 --- a/include/spdk/bdev.h +++ b/include/spdk/bdev.h @@ -495,6 +495,14 @@ bool spdk_bdev_is_md_interleaved(const struct spdk_bdev *bdev); */ bool spdk_bdev_is_md_separate(const struct spdk_bdev *bdev); +/** + * Checks if bdev supports zoned namespace semantics. + * + * \param bdev Block device to query. + * \return true if device supports zoned namespace sementics. + */ +bool spdk_bdev_is_zoned(const struct spdk_bdev *bdev); + /** * Get block device data block size. * diff --git a/include/spdk/bdev_module.h b/include/spdk/bdev_module.h index 97f279cbf..a8bf5693d 100644 --- a/include/spdk/bdev_module.h +++ b/include/spdk/bdev_module.h @@ -334,6 +334,11 @@ struct spdk_bdev { */ uint32_t dif_check_flags; + /** + * Specify whether bdev is zoned device. + */ + bool zoned; + /** * Pointer to the bdev module that registered this bdev. */ diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index 0740d2574..a76c94cf2 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -2520,6 +2520,12 @@ spdk_bdev_is_md_separate(const struct spdk_bdev *bdev) return (bdev->md_len != 0) && !bdev->md_interleave; } +bool +spdk_bdev_is_zoned(const struct spdk_bdev *bdev) +{ + return bdev->zoned; +} + uint32_t spdk_bdev_get_data_block_size(const struct spdk_bdev *bdev) {