From b6cbf872eb801d5e17755f2ba5c876e9582573a8 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Thu, 15 Oct 2020 04:34:25 +0900 Subject: [PATCH] bdev/lvol: Pass bdev name instead of bdev pointer to vbdev_lvs_create Change the first parameter of vbdev_lvs_create() from bdev pointer to bdev name, and then remove spdk_bdev_get_by_name() from rpc_bdev_lvol_create_lvolstore(). Signed-off-by: Shuhei Matsumoto Change-Id: I9b0e47f551657f6aa1235af37a8357b0af62d414 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4707 Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Tomasz Zawadzki Reviewed-by: Aleksey Marchuk --- module/bdev/lvol/vbdev_lvol.c | 12 +++--- module/bdev/lvol/vbdev_lvol.h | 2 +- module/bdev/lvol/vbdev_lvol_rpc.c | 10 +---- .../lib/bdev/vbdev_lvol.c/vbdev_lvol_ut.c | 38 +++++++++++-------- 4 files changed, 31 insertions(+), 31 deletions(-) diff --git a/module/bdev/lvol/vbdev_lvol.c b/module/bdev/lvol/vbdev_lvol.c index c5367369e..58e035a72 100644 --- a/module/bdev/lvol/vbdev_lvol.c +++ b/module/bdev/lvol/vbdev_lvol.c @@ -217,7 +217,7 @@ end: } int -vbdev_lvs_create(struct spdk_bdev *base_bdev, const char *name, uint32_t cluster_sz, +vbdev_lvs_create(const char *base_bdev_name, const char *name, uint32_t cluster_sz, enum lvs_clear_method clear_method, spdk_lvs_op_with_handle_complete cb_fn, void *cb_arg) { struct spdk_bs_dev *bs_dev; @@ -226,9 +226,9 @@ vbdev_lvs_create(struct spdk_bdev *base_bdev, const char *name, uint32_t cluster int rc; int len; - if (base_bdev == NULL) { - SPDK_ERRLOG("Bdev does not exist\n"); - return -ENODEV; + if (base_bdev_name == NULL) { + SPDK_ERRLOG("missing base_bdev_name param\n"); + return -EINVAL; } spdk_lvs_opts_init(&opts); @@ -259,7 +259,7 @@ vbdev_lvs_create(struct spdk_bdev *base_bdev, const char *name, uint32_t cluster return -ENOMEM; } - rc = spdk_bdev_create_bs_dev_ext(base_bdev->name, vbdev_lvs_base_bdev_event_cb, + rc = spdk_bdev_create_bs_dev_ext(base_bdev_name, vbdev_lvs_base_bdev_event_cb, NULL, &bs_dev); if (rc < 0) { SPDK_ERRLOG("Cannot create blobstore device\n"); @@ -268,7 +268,7 @@ vbdev_lvs_create(struct spdk_bdev *base_bdev, const char *name, uint32_t cluster } lvs_req->bs_dev = bs_dev; - lvs_req->base_bdev = base_bdev; + lvs_req->base_bdev = bs_dev->get_base_bdev(bs_dev); lvs_req->cb_fn = cb_fn; lvs_req->cb_arg = cb_arg; diff --git a/module/bdev/lvol/vbdev_lvol.h b/module/bdev/lvol/vbdev_lvol.h index ed3eb1c8e..1004d4fc7 100644 --- a/module/bdev/lvol/vbdev_lvol.h +++ b/module/bdev/lvol/vbdev_lvol.h @@ -47,7 +47,7 @@ struct lvol_store_bdev { TAILQ_ENTRY(lvol_store_bdev) lvol_stores; }; -int vbdev_lvs_create(struct spdk_bdev *base_bdev, const char *name, uint32_t cluster_sz, +int vbdev_lvs_create(const char *base_bdev_name, const char *name, uint32_t cluster_sz, enum lvs_clear_method clear_method, spdk_lvs_op_with_handle_complete cb_fn, void *cb_arg); void vbdev_lvs_destruct(struct spdk_lvol_store *lvs, spdk_lvs_op_complete cb_fn, void *cb_arg); void vbdev_lvs_unload(struct spdk_lvol_store *lvs, spdk_lvs_op_complete cb_fn, void *cb_arg); diff --git a/module/bdev/lvol/vbdev_lvol_rpc.c b/module/bdev/lvol/vbdev_lvol_rpc.c index 1f0f69a4f..8fdce19f5 100644 --- a/module/bdev/lvol/vbdev_lvol_rpc.c +++ b/module/bdev/lvol/vbdev_lvol_rpc.c @@ -120,7 +120,6 @@ rpc_bdev_lvol_create_lvstore(struct spdk_jsonrpc_request *request, const struct spdk_json_val *params) { struct rpc_bdev_lvol_create_lvstore req = {}; - struct spdk_bdev *bdev; int rc = 0; enum lvs_clear_method clear_method; @@ -133,13 +132,6 @@ rpc_bdev_lvol_create_lvstore(struct spdk_jsonrpc_request *request, goto cleanup; } - bdev = spdk_bdev_get_by_name(req.bdev_name); - if (bdev == NULL) { - SPDK_ERRLOG("bdev '%s' does not exist\n", req.bdev_name); - spdk_jsonrpc_send_error_response_fmt(request, -ENODEV, "Bdev %s not found", req.bdev_name); - goto cleanup; - } - if (req.clear_method != NULL) { if (!strcasecmp(req.clear_method, "none")) { clear_method = LVS_CLEAR_WITH_NONE; @@ -155,7 +147,7 @@ rpc_bdev_lvol_create_lvstore(struct spdk_jsonrpc_request *request, clear_method = LVS_CLEAR_WITH_UNMAP; } - rc = vbdev_lvs_create(bdev, req.lvs_name, req.cluster_sz, clear_method, + rc = vbdev_lvs_create(req.bdev_name, req.lvs_name, req.cluster_sz, clear_method, rpc_lvol_store_construct_cb, request); if (rc < 0) { spdk_jsonrpc_send_error_response(request, -rc, spdk_strerror(rc)); diff --git a/test/unit/lib/bdev/vbdev_lvol.c/vbdev_lvol_ut.c b/test/unit/lib/bdev/vbdev_lvol.c/vbdev_lvol_ut.c index 5c373f54c..c66234736 100644 --- a/test/unit/lib/bdev/vbdev_lvol.c/vbdev_lvol_ut.c +++ b/test/unit/lib/bdev/vbdev_lvol.c/vbdev_lvol_ut.c @@ -293,6 +293,13 @@ bdev_blob_destroy(struct spdk_bs_dev *bs_dev) lvol_already_opened = false; } +static struct spdk_bdev * +bdev_blob_get_base_bdev(struct spdk_bs_dev *bs_dev) +{ + CU_ASSERT(bs_dev != NULL); + return &g_bdev; +} + int spdk_bdev_create_bs_dev_ext(const char *bdev_name, spdk_bdev_event_cb_t event_cb, void *event_ctx, struct spdk_bs_dev **_bs_dev) @@ -306,6 +313,7 @@ spdk_bdev_create_bs_dev_ext(const char *bdev_name, spdk_bdev_event_cb_t event_cb bs_dev = calloc(1, sizeof(*bs_dev)); SPDK_CU_ASSERT_FATAL(bs_dev != NULL); bs_dev->destroy = bdev_blob_destroy; + bs_dev->get_base_bdev = bdev_blob_get_base_bdev; *_bs_dev = bs_dev; @@ -681,7 +689,7 @@ ut_lvs_destroy(void) struct spdk_lvol_store *lvs; /* Lvol store is successfully created */ - rc = vbdev_lvs_create(&g_bdev, "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, + rc = vbdev_lvs_create("bdev", "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, NULL); CU_ASSERT(rc == 0); CU_ASSERT(g_lvserrno == 0); @@ -715,7 +723,7 @@ ut_lvol_init(void) int rc; /* Lvol store is successfully created */ - rc = vbdev_lvs_create(&g_bdev, "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, + rc = vbdev_lvs_create("bdev", "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, NULL); CU_ASSERT(rc == 0); CU_ASSERT(g_lvserrno == 0); @@ -750,7 +758,7 @@ ut_lvol_snapshot(void) struct spdk_lvol *lvol = NULL; /* Lvol store is successfully created */ - rc = vbdev_lvs_create(&g_bdev, "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, + rc = vbdev_lvs_create("bdev", "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, NULL); CU_ASSERT(rc == 0); CU_ASSERT(g_lvserrno == 0); @@ -800,7 +808,7 @@ ut_lvol_clone(void) struct spdk_lvol *clone = NULL; /* Lvol store is successfully created */ - rc = vbdev_lvs_create(&g_bdev, "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, + rc = vbdev_lvs_create("bdev", "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, NULL); CU_ASSERT(rc == 0); CU_ASSERT(g_lvserrno == 0); @@ -866,7 +874,7 @@ ut_lvol_hotremove(void) lvol_already_opened = false; /* Lvol store is successfully created */ - rc = vbdev_lvs_create(&g_bdev, "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, + rc = vbdev_lvs_create("bdev", "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, NULL); CU_ASSERT(rc == 0); CU_ASSERT(g_lvserrno == 0); @@ -960,7 +968,7 @@ ut_lvol_rename(void) int rc; /* Lvol store is successfully created */ - rc = vbdev_lvs_create(&g_bdev, "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, + rc = vbdev_lvs_create("bdev", "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, NULL); CU_ASSERT(rc == 0); CU_ASSERT(g_lvserrno == 0); @@ -1025,7 +1033,7 @@ ut_lvol_destroy(void) int rc; /* Lvol store is successfully created */ - rc = vbdev_lvs_create(&g_bdev, "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, + rc = vbdev_lvs_create("bdev", "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, NULL); CU_ASSERT(rc == 0); CU_ASSERT(g_lvserrno == 0); @@ -1073,7 +1081,7 @@ ut_lvol_resize(void) int rc = 0; /* Lvol store is successfully created */ - rc = vbdev_lvs_create(&g_bdev, "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, + rc = vbdev_lvs_create("bdev", "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, NULL); CU_ASSERT(rc == 0); CU_ASSERT(g_lvserrno == 0); @@ -1119,7 +1127,7 @@ ut_lvol_set_read_only(void) int rc = 0; /* Lvol store is successfully created */ - rc = vbdev_lvs_create(&g_bdev, "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, + rc = vbdev_lvs_create("bdev", "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, NULL); CU_ASSERT(rc == 0); CU_ASSERT(g_lvserrno == 0); @@ -1159,7 +1167,7 @@ ut_lvs_unload(void) struct spdk_lvol_store *lvs; /* Lvol store is successfully created */ - rc = vbdev_lvs_create(&g_bdev, "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, + rc = vbdev_lvs_create("bdev", "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, NULL); CU_ASSERT(rc == 0); CU_ASSERT(g_lvserrno == 0); @@ -1195,7 +1203,7 @@ ut_lvs_init(void) /* spdk_lvs_init() fails */ lvol_store_initialize_fail = true; - rc = vbdev_lvs_create(&g_bdev, "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, + rc = vbdev_lvs_create("bdev", "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, NULL); CU_ASSERT(rc != 0); CU_ASSERT(g_lvserrno == 0); @@ -1206,7 +1214,7 @@ ut_lvs_init(void) /* spdk_lvs_init_cb() fails */ lvol_store_initialize_cb_fail = true; - rc = vbdev_lvs_create(&g_bdev, "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, + rc = vbdev_lvs_create("bdev", "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, NULL); CU_ASSERT(rc == 0); CU_ASSERT(g_lvserrno != 0); @@ -1215,7 +1223,7 @@ ut_lvs_init(void) lvol_store_initialize_cb_fail = false; /* Lvol store is successfully created */ - rc = vbdev_lvs_create(&g_bdev, "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, + rc = vbdev_lvs_create("bdev", "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, NULL); CU_ASSERT(rc == 0); CU_ASSERT(g_lvserrno == 0); @@ -1226,7 +1234,7 @@ ut_lvs_init(void) g_lvol_store = NULL; /* Bdev with lvol store already claimed */ - rc = vbdev_lvs_create(&g_bdev, "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, + rc = vbdev_lvs_create("bdev", "lvs", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, NULL); CU_ASSERT(rc != 0); CU_ASSERT(g_lvserrno == 0); @@ -1360,7 +1368,7 @@ ut_lvs_rename(void) struct spdk_lvol_store *lvs; /* Lvol store is successfully created */ - rc = vbdev_lvs_create(&g_bdev, "old_lvs_name", 0, LVS_CLEAR_WITH_UNMAP, + rc = vbdev_lvs_create("bdev", "old_lvs_name", 0, LVS_CLEAR_WITH_UNMAP, lvol_store_op_with_handle_complete, NULL); CU_ASSERT(rc == 0); CU_ASSERT(g_lvserrno == 0);