From b8681aa6594f817aed060f3c4d493e07f6235ff9 Mon Sep 17 00:00:00 2001 From: GangCao Date: Fri, 29 Dec 2017 16:45:15 -0500 Subject: [PATCH] bdev/qos: add the QoS information on RPC get_bdevs interface Change-Id: I515a08ce95ffd6fea4d5f4fab42e6d09bcdd11f7 Signed-off-by: GangCao Reviewed-on: https://review.gerrithub.io/393278 Tested-by: SPDK Automated Test System Reviewed-by: Ben Walker Reviewed-by: Jim Harris --- include/spdk/bdev.h | 10 ++++++++++ lib/bdev/bdev.c | 6 ++++++ lib/bdev/rpc/bdev_rpc.c | 3 +++ 3 files changed, 19 insertions(+) diff --git a/include/spdk/bdev.h b/include/spdk/bdev.h index 2d5d26503..f6c4063c8 100644 --- a/include/spdk/bdev.h +++ b/include/spdk/bdev.h @@ -299,6 +299,16 @@ uint32_t spdk_bdev_get_block_size(const struct spdk_bdev *bdev); */ uint64_t spdk_bdev_get_num_blocks(const struct spdk_bdev *bdev); +/** + * Get IOs per second of block device for the QoS rate limiting. + * + * \param bdev Block device to query. + * \return IOs per second. + * + * Return 0 for no QoS enforced on the queried block device. + */ +uint64_t spdk_bdev_get_qos_ios_per_sec(const struct spdk_bdev *bdev); + /** * Get minimum I/O buffer address alignment for a bdev. * diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index 342e7a258..04975acaa 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -1363,6 +1363,12 @@ spdk_bdev_get_num_blocks(const struct spdk_bdev *bdev) return bdev->blockcnt; } +uint64_t +spdk_bdev_get_qos_ios_per_sec(const struct spdk_bdev *bdev) +{ + return bdev->ios_per_sec; +} + size_t spdk_bdev_get_buf_align(const struct spdk_bdev *bdev) { diff --git a/lib/bdev/rpc/bdev_rpc.c b/lib/bdev/rpc/bdev_rpc.c index 790160542..8b483b5cd 100644 --- a/lib/bdev/rpc/bdev_rpc.c +++ b/lib/bdev/rpc/bdev_rpc.c @@ -74,6 +74,9 @@ spdk_rpc_dump_bdev_info(struct spdk_json_write_ctx *w, spdk_json_write_named_string(w, "uuid", uuid_str); } + spdk_json_write_name(w, "qos_ios_per_sec"); + spdk_json_write_uint64(w, spdk_bdev_get_qos_ios_per_sec(bdev)); + spdk_json_write_name(w, "claimed"); spdk_json_write_bool(w, (bdev->claim_module != NULL));