From c94ecfaedcb043eae729ef03b815ac98ce0c2042 Mon Sep 17 00:00:00 2001 From: Konrad Sztyber Date: Tue, 27 Aug 2019 14:17:46 +0200 Subject: [PATCH] lib/bdev: zoned info in get_bdevs RPC call Zoned bdev properties were added to the result of the get_bdevs RPC call: - zoned: indicates whether the device is zoned or a regular block device - zone_size: number of blocks in a single zone - max_open_zones: maximum number of open zones - optimal_open_zones: optimal number of open zones The "zoned" field is a boolean and is always present, while the rest is only available for zoned bdevs. Change-Id: Ib82b39d4ab20543d0a754dbc4c0317885fb831d1 Signed-off-by: Konrad Sztyber Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/467144 Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Mateusz Kozlowski Reviewed-by: Maciej Szwed Reviewed-by: Jim Harris --- CHANGELOG.md | 9 +++++++++ doc/jsonrpc.md | 1 + module/bdev/rpc/bdev_rpc.c | 7 +++++++ .../spdkcli/match_files/spdkcli_details_vhost.test.match | 3 ++- 4 files changed, 19 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c8de91825..563e93d85 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,15 @@ Added `spdk_bdev_get_write_unit_size()` function for retrieving required number of logical blocks for write operation. +New zone-related fields were added to the result of the `get_bdevs` RPC call: + - `zoned`: indicates whether the device is zoned or a regular + block device + - `zone_size`: number of blocks in a single zone + - `max_open_zones`: maximum number of open zones + - `optimal_open_zones`: optimal number of open zones +The `zoned` field is a boolean and is always present, while the rest is only available for zoned +bdevs. + ### nvmf The `spdk_nvmf_tgt_create` function now accepts an object of type `spdk_nvmf_target_opts` diff --git a/doc/jsonrpc.md b/doc/jsonrpc.md index bb808c328..e0943fbb7 100644 --- a/doc/jsonrpc.md +++ b/doc/jsonrpc.md @@ -611,6 +611,7 @@ Example response: "block_size": 512, "num_blocks": 20480, "claimed": false, + "zoned": false, "supported_io_types": { "read": true, "write": true, diff --git a/module/bdev/rpc/bdev_rpc.c b/module/bdev/rpc/bdev_rpc.c index 8500c68a7..1c833085c 100644 --- a/module/bdev/rpc/bdev_rpc.c +++ b/module/bdev/rpc/bdev_rpc.c @@ -267,6 +267,13 @@ spdk_rpc_dump_bdev_info(struct spdk_json_write_ctx *w, spdk_json_write_named_bool(w, "claimed", (bdev->internal.claim_module != NULL)); + spdk_json_write_named_bool(w, "zoned", bdev->zoned); + if (bdev->zoned) { + spdk_json_write_named_uint64(w, "zone_size", bdev->zone_size); + spdk_json_write_named_uint64(w, "max_open_zones", bdev->max_open_zones); + spdk_json_write_named_uint64(w, "optimal_open_zones", bdev->optimal_open_zones); + } + spdk_json_write_named_object_begin(w, "supported_io_types"); spdk_json_write_named_bool(w, "read", spdk_bdev_io_type_supported(bdev, SPDK_BDEV_IO_TYPE_READ)); diff --git a/test/spdkcli/match_files/spdkcli_details_vhost.test.match b/test/spdkcli/match_files/spdkcli_details_vhost.test.match index 735771cf2..afab7ba56 100644 --- a/test/spdkcli/match_files/spdkcli_details_vhost.test.match +++ b/test/spdkcli/match_files/spdkcli_details_vhost.test.match @@ -27,5 +27,6 @@ "write": $(S), "write_zeroes": $(S) }, - "uuid": "$(S)" + "uuid": "$(S)", + "zoned": false }