From 3ea2bffb9e33be691b6cf47309e4efba85dd2ca5 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Thu, 15 Oct 2020 03:04:45 +0900 Subject: [PATCH] blob/bdev: Add function pointer get_base_bdev to struct spdk_bs_dev spdk_bdev_create_bs_dev_ext() gets not bdev pointer but bdev name as an argument, and hence vbdev_lvs_create() will get bdev name accordingly. However after completing spdk_bdev_create_bs_dev_ext(), vbdev_lvs_create() has to get bdev pointer from the created bs_dev. Hence add a function pointer get_base_bdev to struct spdk_bs_dev and set it to bdev_blob_get_base_bdev() at initialization. Signed-off-by: Shuhei Matsumoto Change-Id: Idef0663ace85db0269442212014286669c150069 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4706 Tested-by: SPDK CI Jenkins Reviewed-by: Jim Harris Reviewed-by: Tomasz Zawadzki Reviewed-by: Aleksey Marchuk --- include/spdk/blob.h | 2 ++ module/blob/bdev/blob_bdev.c | 7 +++++++ test/make/check_so_deps.sh | 2 ++ 3 files changed, 11 insertions(+) diff --git a/include/spdk/blob.h b/include/spdk/blob.h index fbc2728ee..7bcac9ba5 100644 --- a/include/spdk/blob.h +++ b/include/spdk/blob.h @@ -191,6 +191,8 @@ struct spdk_bs_dev { uint64_t lba, uint32_t lba_count, struct spdk_bs_dev_cb_args *cb_args); + struct spdk_bdev *(*get_base_bdev)(struct spdk_bs_dev *dev); + uint64_t blockcnt; uint32_t blocklen; /* In bytes */ }; diff --git a/module/blob/bdev/blob_bdev.c b/module/blob/bdev/blob_bdev.c index 592b68782..ffea54a7f 100644 --- a/module/blob/bdev/blob_bdev.c +++ b/module/blob/bdev/blob_bdev.c @@ -319,6 +319,12 @@ bdev_blob_destroy(struct spdk_bs_dev *bs_dev) free(bs_dev); } +static struct spdk_bdev * +bdev_blob_get_base_bdev(struct spdk_bs_dev *bs_dev) +{ + return __get_bdev(bs_dev); +} + static void blob_bdev_init(struct blob_bdev *b, struct spdk_bdev_desc *desc) { @@ -340,6 +346,7 @@ blob_bdev_init(struct blob_bdev *b, struct spdk_bdev_desc *desc) b->bs_dev.writev = bdev_blob_writev; b->bs_dev.write_zeroes = bdev_blob_write_zeroes; b->bs_dev.unmap = bdev_blob_unmap; + b->bs_dev.get_base_bdev = bdev_blob_get_base_bdev; } struct spdk_bs_dev * diff --git a/test/make/check_so_deps.sh b/test/make/check_so_deps.sh index 549e359ad..773972660 100755 --- a/test/make/check_so_deps.sh +++ b/test/make/check_so_deps.sh @@ -44,6 +44,8 @@ function confirm_abi_deps() { name = spdk_nvme_log_page [suppress_type] name = spdk_nvme_ctrlr_opts +[suppress_type] + name = spdk_bs_dev EOF for object in "$libdir"/libspdk_*.so; do