From 18c6e89d9a6e2b3bd8bfaac60bcfb96cdbf652f1 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Tue, 29 Mar 2022 16:58:18 +0900 Subject: [PATCH] bdev/split: Use bdev_open_ext() for creation instead of bdev_get_by_name() Signed-off-by: Shuhei Matsumoto Change-Id: I218816a01ddadd637ea37bfef99745c8580b8033 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/12074 Community-CI: Broadcom CI Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins Reviewed-by: Aleksey Marchuk Reviewed-by: Ben Walker Reviewed-by: Monica Kenguva Reviewed-by: Jim Harris --- module/bdev/split/vbdev_split_rpc.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/module/bdev/split/vbdev_split_rpc.c b/module/bdev/split/vbdev_split_rpc.c index 98477be69..38b9b2bfd 100644 --- a/module/bdev/split/vbdev_split_rpc.c +++ b/module/bdev/split/vbdev_split_rpc.c @@ -50,12 +50,18 @@ static const struct spdk_json_object_decoder rpc_construct_split_decoders[] = { {"split_size_mb", offsetof(struct rpc_construct_split, split_size_mb), spdk_json_decode_uint64, true}, }; +static void +dummy_bdev_event_cb(enum spdk_bdev_event_type type, struct spdk_bdev *bdev, void *ctx) +{ +} + static void rpc_bdev_split_create(struct spdk_jsonrpc_request *request, const struct spdk_json_val *params) { struct rpc_construct_split req = {}; struct spdk_json_write_ctx *w; + struct spdk_bdev_desc *base_desc; struct spdk_bdev *base_bdev; int rc; @@ -78,13 +84,15 @@ rpc_bdev_split_create(struct spdk_jsonrpc_request *request, w = spdk_jsonrpc_begin_result(request); spdk_json_write_array_begin(w); - base_bdev = spdk_bdev_get_by_name(req.base_bdev); - if (base_bdev != NULL) { + rc = spdk_bdev_open_ext(req.base_bdev, false, dummy_bdev_event_cb, NULL, &base_desc); + if (rc == 0) { struct spdk_bdev_part_base *split_base; struct bdev_part_tailq *split_base_tailq; struct spdk_bdev_part *split_part; struct spdk_bdev *split_bdev; + base_bdev = spdk_bdev_desc_get_bdev(base_desc); + split_base = vbdev_split_get_part_base(base_bdev); assert(split_base != NULL); @@ -94,6 +102,8 @@ rpc_bdev_split_create(struct spdk_jsonrpc_request *request, split_bdev = spdk_bdev_part_get_bdev(split_part); spdk_json_write_string(w, spdk_bdev_get_name(split_bdev)); } + + spdk_bdev_close(base_desc); } spdk_json_write_array_end(w);