bdev: deprecate spdk_vbdev_register

This API had good intentions, but as more complicated
use cases came up where base bdevs could come and go,
we've realized that the bdev layer will need another
mechanism to query bdev modules on these types of
relationships between a virtual bdev and its base
bdevs.  We removed all code related to tracking
the array of base bdevs a long time ago.

Change all existing callers to use spdk_bdev_register.
Document spdk_vbdev_register as deprecated for now,
and change its implementation to just call
spdk_bdev_register for simplicity sake.

Signed-off-by: Jim Harris <james.r.harris@intel.com>
Change-Id: I3b40ed96480c0fa7184db42953a9f4e4c167fed1

Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/450076
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Ben Walker <benjamin.walker@intel.com>
Reviewed-by: Changpeng Liu <changpeng.liu@intel.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
This commit is contained in:
Jim Harris 2019-04-03 05:59:05 -07:00 committed by Darek Stojaczyk
parent a0760b9554
commit bfd1e46e6e
12 changed files with 30 additions and 40 deletions

View File

@ -43,6 +43,9 @@ to be performed on the thread at given time.
An new API `spdk_bdev_get_data_block_size` has been added to get size of data
block except for metadata.
spdk_vbdev_register() has been deprecated. spdk_bdev_register() should be used
instead.
### NVMe-oF Target
Support for per-device shared receive queues in the RDMA transport has been added.

View File

@ -603,6 +603,10 @@ void spdk_bdev_destruct_done(struct spdk_bdev *bdev, int bdeverrno);
/**
* Register a virtual bdev.
*
* This function is deprecated. Users should call spdk_bdev_register instead.
* The bdev layer currently makes no use of the base_bdevs array, so switching
* to spdk_bdev_register results in no loss of functionality.
*
* \param vbdev Virtual bdev to register.
* \param base_bdevs Array of bdevs upon which this vbdev is based.
* \param base_bdev_count Number of bdevs in base_bdevs.

View File

@ -3758,16 +3758,8 @@ spdk_bdev_register(struct spdk_bdev *bdev)
int
spdk_vbdev_register(struct spdk_bdev *vbdev, struct spdk_bdev **base_bdevs, int base_bdev_count)
{
int rc;
rc = spdk_bdev_init(vbdev);
if (rc) {
return rc;
}
spdk_bdev_start(vbdev);
spdk_notify_send("bdev_register", spdk_bdev_get_name(vbdev));
return 0;
SPDK_ERRLOG("This function is deprecated. Use spdk_bdev_register() instead.\n");
return spdk_bdev_register(vbdev);
}
void

View File

@ -1234,17 +1234,17 @@ vbdev_compress_claim(struct vbdev_compress *comp_bdev)
goto error_claim;
}
rc = spdk_vbdev_register(&comp_bdev->comp_bdev, &comp_bdev->base_bdev, 1);
rc = spdk_bdev_register(&comp_bdev->comp_bdev);
if (rc < 0) {
SPDK_ERRLOG("trying to register vbdev\n");
goto error_vbdev_register;
SPDK_ERRLOG("trying to register bdev\n");
goto error_bdev_register;
}
SPDK_NOTICELOG("registered io_device and virtual bdev for: %s\n", comp_bdev->comp_bdev.name);
return;
/* Error cleanup paths. */
error_vbdev_register:
error_bdev_register:
spdk_bdev_module_release_bdev(comp_bdev->base_bdev);
error_claim:
TAILQ_REMOVE(&g_vbdev_comp, comp_bdev, link);

View File

@ -1605,11 +1605,11 @@ vbdev_crypto_claim(struct spdk_bdev *bdev)
goto error_session_init;
}
rc = spdk_vbdev_register(&vbdev->crypto_bdev, &vbdev->base_bdev, 1);
rc = spdk_bdev_register(&vbdev->crypto_bdev);
if (rc < 0) {
SPDK_ERRLOG("ERROR trying to register vbdev\n");
SPDK_ERRLOG("ERROR trying to register bdev\n");
rc = -EINVAL;
goto error_vbdev_register;
goto error_bdev_register;
}
SPDK_DEBUGLOG(SPDK_LOG_VBDEV_crypto, "registered io_device and virtual bdev for: %s\n",
name->vbdev_name);
@ -1619,7 +1619,7 @@ vbdev_crypto_claim(struct spdk_bdev *bdev)
return rc;
/* Error cleanup paths. */
error_vbdev_register:
error_bdev_register:
error_session_init:
rte_cryptodev_sym_session_free(vbdev->session_decrypt);
error_session_de_create:

View File

@ -967,7 +967,7 @@ _create_lvol_disk(struct spdk_lvol *lvol, bool destroy)
bdev->fn_table = &vbdev_lvol_fn_table;
bdev->module = &g_lvol_if;
rc = spdk_vbdev_register(bdev, &lvs_bdev->bdev, 1);
rc = spdk_bdev_register(bdev);
if (rc) {
free(bdev);
return rc;

View File

@ -367,7 +367,7 @@ spdk_bdev_part_construct(struct spdk_bdev_part *part, struct spdk_bdev_part_base
base->channel_size,
name);
spdk_vbdev_register(&part->internal.bdev, &base->bdev, 1);
spdk_bdev_register(&part->internal.bdev);
TAILQ_INSERT_TAIL(base->tailq, part, tailq);
return 0;

View File

@ -630,7 +630,7 @@ vbdev_passthru_register(struct spdk_bdev *bdev)
}
SPDK_NOTICELOG("bdev claimed\n");
rc = spdk_vbdev_register(&pt_node->pt_bdev, &bdev, 1);
rc = spdk_bdev_register(&pt_node->pt_bdev);
if (rc) {
SPDK_ERRLOG("could not register pt_bdev\n");
spdk_bdev_close(pt_node->base_desc);

View File

@ -330,10 +330,9 @@ allocate_bdev(char *name)
}
static struct spdk_bdev *
allocate_vbdev(char *name, struct spdk_bdev *base1, struct spdk_bdev *base2)
allocate_vbdev(char *name)
{
struct spdk_bdev *bdev;
struct spdk_bdev *array[2];
int rc;
bdev = calloc(1, sizeof(*bdev));
@ -343,13 +342,7 @@ allocate_vbdev(char *name, struct spdk_bdev *base1, struct spdk_bdev *base2)
bdev->fn_table = &fn_table;
bdev->module = &vbdev_ut_if;
/* vbdev must have at least one base bdev */
CU_ASSERT(base1 != NULL);
array[0] = base1;
array[1] = base2;
rc = spdk_vbdev_register(bdev, array, base2 == NULL ? 1 : 2);
rc = spdk_bdev_register(bdev);
CU_ASSERT(rc == 0);
return bdev;
@ -464,19 +457,19 @@ open_write_test(void)
rc = spdk_bdev_module_claim_bdev(bdev[3], NULL, &bdev_ut_if);
CU_ASSERT(rc == 0);
bdev[4] = allocate_vbdev("bdev4", bdev[0], bdev[1]);
bdev[4] = allocate_vbdev("bdev4");
rc = spdk_bdev_module_claim_bdev(bdev[4], NULL, &bdev_ut_if);
CU_ASSERT(rc == 0);
bdev[5] = allocate_vbdev("bdev5", bdev[2], NULL);
bdev[5] = allocate_vbdev("bdev5");
rc = spdk_bdev_module_claim_bdev(bdev[5], NULL, &bdev_ut_if);
CU_ASSERT(rc == 0);
bdev[6] = allocate_vbdev("bdev6", bdev[2], NULL);
bdev[6] = allocate_vbdev("bdev6");
bdev[7] = allocate_vbdev("bdev7", bdev[2], bdev[3]);
bdev[7] = allocate_vbdev("bdev7");
bdev[8] = allocate_vbdev("bdev8", bdev[4], bdev[5]);
bdev[8] = allocate_vbdev("bdev8");
/* Open bdev0 read-only. This should succeed. */
rc = spdk_bdev_open(bdev[0], false, NULL, NULL, &desc[0]);

View File

@ -129,8 +129,7 @@ DEFINE_STUB(spdk_bdev_open, int, (struct spdk_bdev *bdev, bool write,
DEFINE_STUB(spdk_bdev_module_claim_bdev, int, (struct spdk_bdev *bdev, struct spdk_bdev_desc *desc,
struct spdk_bdev_module *module), 0);
DEFINE_STUB_V(spdk_bdev_module_examine_done, (struct spdk_bdev_module *module));
DEFINE_STUB(spdk_vbdev_register, int, (struct spdk_bdev *vbdev, struct spdk_bdev **base_bdevs,
int base_bdev_count), 0);
DEFINE_STUB(spdk_bdev_register, int, (struct spdk_bdev *bdev), 0);
DEFINE_STUB(spdk_bdev_get_by_name, struct spdk_bdev *, (const char *bdev_name), NULL);
DEFINE_STUB(spdk_env_get_socket_id, uint32_t, (uint32_t core), 0);
DEFINE_STUB_V(spdk_reduce_vol_readv, (struct spdk_reduce_vol *vol,

View File

@ -162,8 +162,7 @@ DEFINE_STUB(spdk_bdev_open, int, (struct spdk_bdev *bdev, bool write,
DEFINE_STUB(spdk_bdev_module_claim_bdev, int, (struct spdk_bdev *bdev, struct spdk_bdev_desc *desc,
struct spdk_bdev_module *module), 0);
DEFINE_STUB_V(spdk_bdev_module_examine_done, (struct spdk_bdev_module *module));
DEFINE_STUB(spdk_vbdev_register, int, (struct spdk_bdev *vbdev, struct spdk_bdev **base_bdevs,
int base_bdev_count), 0);
DEFINE_STUB(spdk_bdev_register, int, (struct spdk_bdev *vbdev), 0);
DEFINE_STUB(spdk_env_get_socket_id, uint32_t, (uint32_t core), 0);
/* DPDK stubs */

View File

@ -550,7 +550,7 @@ spdk_bdev_get_name(const struct spdk_bdev *bdev)
}
int
spdk_vbdev_register(struct spdk_bdev *vbdev, struct spdk_bdev **base_bdevs, int base_bdev_count)
spdk_bdev_register(struct spdk_bdev *vbdev)
{
TAILQ_INIT(&vbdev->aliases);