From ed6a63d56924103d7363d4e1085db8057fa7cac2 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Fri, 21 Sep 2018 08:33:32 +0900 Subject: [PATCH] bdev/raid: Add JSON config dump Change-Id: I5b2832aad585145e021e26ac288da91ece2153a9 Signed-off-by: Shuhei Matsumoto Reviewed-on: https://review.gerrithub.io/426289 Chandler-Test-Pool: SPDK Automated Test System Tested-by: SPDK CI Jenkins Reviewed-by: Karol Latecki Reviewed-by: Paul Luse Reviewed-by: Pawel Wodkowski Reviewed-by: Ben Walker Reviewed-by: Jim Harris --- lib/bdev/raid/bdev_raid.c | 49 +++++++++++++++++-- test/unit/lib/bdev/bdev_raid.c/bdev_raid_ut.c | 12 +++++ 2 files changed, 56 insertions(+), 5 deletions(-) diff --git a/lib/bdev/raid/bdev_raid.c b/lib/bdev/raid/bdev_raid.c index 77b7b7d1c..ce7a97db9 100644 --- a/lib/bdev/raid/bdev_raid.c +++ b/lib/bdev/raid/bdev_raid.c @@ -696,13 +696,52 @@ raid_bdev_dump_info_json(void *ctx, struct spdk_json_write_ctx *w) return 0; } +/* + * brief: + * raid_bdev_write_config_json is the function table pointer for raid bdev + * params: + * bdev - pointer to spdk_bdev + * w - pointer to json context + * returns: + * none + */ +static void +raid_bdev_write_config_json(struct spdk_bdev *bdev, struct spdk_json_write_ctx *w) +{ + struct raid_bdev *raid_bdev = bdev->ctxt; + struct spdk_bdev *base; + uint16_t i; + + spdk_json_write_object_begin(w); + + spdk_json_write_named_string(w, "method", "construct_raid_bdev"); + + spdk_json_write_named_object_begin(w, "params"); + spdk_json_write_named_string(w, "name", bdev->name); + spdk_json_write_named_uint32(w, "strip_size", raid_bdev->strip_size); + spdk_json_write_named_uint32(w, "raid_level", raid_bdev->raid_level); + + spdk_json_write_named_array_begin(w, "base_bdevs"); + for (i = 0; i < raid_bdev->num_base_bdevs; i++) { + base = raid_bdev->base_bdev_info[i].bdev; + if (base) { + spdk_json_write_string(w, base->name); + } + } + spdk_json_write_array_end(w); + spdk_json_write_object_end(w); + + spdk_json_write_object_end(w); +} + /* g_raid_bdev_fn_table is the function table for raid bdev */ static const struct spdk_bdev_fn_table g_raid_bdev_fn_table = { - .destruct = raid_bdev_destruct, - .submit_request = raid_bdev_submit_request, - .io_type_supported = raid_bdev_io_type_supported, - .get_io_channel = raid_bdev_get_io_channel, - .dump_info_json = raid_bdev_dump_info_json, + .destruct = raid_bdev_destruct, + .submit_request = raid_bdev_submit_request, + .io_type_supported = raid_bdev_io_type_supported, + .get_io_channel = raid_bdev_get_io_channel, + .dump_info_json = raid_bdev_dump_info_json, + .write_config_json = raid_bdev_write_config_json, }; /* diff --git a/test/unit/lib/bdev/bdev_raid.c/bdev_raid_ut.c b/test/unit/lib/bdev/bdev_raid.c/bdev_raid_ut.c index 60c5c3abe..ffa466da1 100644 --- a/test/unit/lib/bdev/bdev_raid.c/bdev_raid_ut.c +++ b/test/unit/lib/bdev/bdev_raid.c/bdev_raid_ut.c @@ -339,6 +339,18 @@ spdk_json_write_object_begin(struct spdk_json_write_ctx *w) return 0; } +int +spdk_json_write_named_object_begin(struct spdk_json_write_ctx *w, const char *name) +{ + return 0; +} + +int +spdk_json_write_named_array_begin(struct spdk_json_write_ctx *w, const char *name) +{ + return 0; +} + int spdk_json_write_array_end(struct spdk_json_write_ctx *w) {