bdev/split: Use spdk_bdev_part_base_construct_ext() to pass bdev_name
Use spdk_bdev_part_base_construct_ext() to pass bdev_name and remove the spdk_bdev_get_by_name() call. Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Change-Id: I2ce2e892949c7e6a78d90699e3826ff57ee3c2ee Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/4578 Community-CI: Mellanox Build Bot 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> Reviewed-by: Paul Luse <paul.e.luse@intel.com>
This commit is contained in:
parent
db8bd99588
commit
d719c79309
@ -237,17 +237,29 @@ vbdev_split_create(struct spdk_vbdev_split_config *cfg)
|
|||||||
|
|
||||||
assert(cfg->split_count > 0);
|
assert(cfg->split_count > 0);
|
||||||
|
|
||||||
base_bdev = spdk_bdev_get_by_name(cfg->base_bdev);
|
TAILQ_INIT(&cfg->splits);
|
||||||
if (!base_bdev) {
|
rc = spdk_bdev_part_base_construct_ext(cfg->base_bdev,
|
||||||
return -ENODEV;
|
vbdev_split_base_bdev_hotremove_cb,
|
||||||
|
&split_if, &vbdev_split_fn_table,
|
||||||
|
&cfg->splits, vbdev_split_base_free, cfg,
|
||||||
|
sizeof(struct vbdev_split_channel),
|
||||||
|
NULL, NULL, &cfg->split_base);
|
||||||
|
if (rc != 0) {
|
||||||
|
if (rc != -ENODEV) {
|
||||||
|
SPDK_ERRLOG("Cannot construct bdev part base\n");
|
||||||
|
}
|
||||||
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
base_bdev = spdk_bdev_part_base_get_bdev(cfg->split_base);
|
||||||
|
|
||||||
if (cfg->split_size_mb) {
|
if (cfg->split_size_mb) {
|
||||||
if (((cfg->split_size_mb * mb) % base_bdev->blocklen) != 0) {
|
if (((cfg->split_size_mb * mb) % base_bdev->blocklen) != 0) {
|
||||||
SPDK_ERRLOG("Split size %" PRIu64 " MB is not possible with block size "
|
SPDK_ERRLOG("Split size %" PRIu64 " MB is not possible with block size "
|
||||||
"%" PRIu32 "\n",
|
"%" PRIu32 "\n",
|
||||||
cfg->split_size_mb, base_bdev->blocklen);
|
cfg->split_size_mb, base_bdev->blocklen);
|
||||||
return -EINVAL;
|
rc = -EINVAL;
|
||||||
|
goto err;
|
||||||
}
|
}
|
||||||
split_size_blocks = (cfg->split_size_mb * mb) / base_bdev->blocklen;
|
split_size_blocks = (cfg->split_size_mb * mb) / base_bdev->blocklen;
|
||||||
SPDK_DEBUGLOG(vbdev_split, "Split size %" PRIu64 " MB specified by user\n",
|
SPDK_DEBUGLOG(vbdev_split, "Split size %" PRIu64 " MB specified by user\n",
|
||||||
@ -267,18 +279,7 @@ vbdev_split_create(struct spdk_vbdev_split_config *cfg)
|
|||||||
|
|
||||||
SPDK_DEBUGLOG(vbdev_split, "base_bdev: %s split_count: %" PRIu64
|
SPDK_DEBUGLOG(vbdev_split, "base_bdev: %s split_count: %" PRIu64
|
||||||
" split_size_blocks: %" PRIu64 "\n",
|
" split_size_blocks: %" PRIu64 "\n",
|
||||||
spdk_bdev_get_name(base_bdev), split_count, split_size_blocks);
|
cfg->base_bdev, split_count, split_size_blocks);
|
||||||
|
|
||||||
TAILQ_INIT(&cfg->splits);
|
|
||||||
cfg->split_base = spdk_bdev_part_base_construct(base_bdev,
|
|
||||||
vbdev_split_base_bdev_hotremove_cb,
|
|
||||||
&split_if, &vbdev_split_fn_table,
|
|
||||||
&cfg->splits, vbdev_split_base_free, cfg,
|
|
||||||
sizeof(struct vbdev_split_channel), NULL, NULL);
|
|
||||||
if (!cfg->split_base) {
|
|
||||||
SPDK_ERRLOG("Cannot construct bdev part base\n");
|
|
||||||
return -ENOMEM;
|
|
||||||
}
|
|
||||||
|
|
||||||
offset_blocks = 0;
|
offset_blocks = 0;
|
||||||
for (i = 0; i < split_count; i++) {
|
for (i = 0; i < split_count; i++) {
|
||||||
|
Loading…
Reference in New Issue
Block a user