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 <shuhei.matsumoto.xt@hitachi.com>
Change-Id: Idef0663ace85db0269442212014286669c150069
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4706
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
This commit is contained in:
Shuhei Matsumoto 2020-10-15 03:04:45 +09:00 committed by Tomasz Zawadzki
parent 6051368da9
commit 3ea2bffb9e
3 changed files with 11 additions and 0 deletions

View File

@ -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 */
};

View File

@ -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 *

View File

@ -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