From 9b3ae37f335bc959cf014db29e8cfc08e72742c0 Mon Sep 17 00:00:00 2001 From: Wojciech Malikowski Date: Fri, 5 Jul 2019 08:10:58 -0400 Subject: [PATCH] lib/bdev: Added spdk_bdev_is_zoned() to bdev interface This patch is entry point for extending bdev interface to support devices with zoned namespace semantics. spdk_bdev_is_zoned() will allow user to check if bdev is zoned bdev. Change-Id: Id9ea9898d406d1d942bf3081b00ebcb574ac2b5e Signed-off-by: Wojciech Malikowski Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/460641 Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Ben Walker Reviewed-by: Maciej Szwed --- include/spdk/bdev.h | 8 ++++++++ include/spdk/bdev_module.h | 5 +++++ lib/bdev/bdev.c | 6 ++++++ 3 files changed, 19 insertions(+) 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) {