diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b705a868..b23080cf2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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. diff --git a/include/spdk/bdev_module.h b/include/spdk/bdev_module.h index 79b06b65a..a69734895 100644 --- a/include/spdk/bdev_module.h +++ b/include/spdk/bdev_module.h @@ -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. diff --git a/lib/bdev/bdev.c b/lib/bdev/bdev.c index e02cf4c56..8bb758463 100644 --- a/lib/bdev/bdev.c +++ b/lib/bdev/bdev.c @@ -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 diff --git a/lib/bdev/compress/vbdev_compress.c b/lib/bdev/compress/vbdev_compress.c index 4f16322c7..8b2541416 100644 --- a/lib/bdev/compress/vbdev_compress.c +++ b/lib/bdev/compress/vbdev_compress.c @@ -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); diff --git a/lib/bdev/crypto/vbdev_crypto.c b/lib/bdev/crypto/vbdev_crypto.c index 87737347e..1e6b2343e 100644 --- a/lib/bdev/crypto/vbdev_crypto.c +++ b/lib/bdev/crypto/vbdev_crypto.c @@ -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: diff --git a/lib/bdev/lvol/vbdev_lvol.c b/lib/bdev/lvol/vbdev_lvol.c index f41c5da7a..9793a5b1e 100644 --- a/lib/bdev/lvol/vbdev_lvol.c +++ b/lib/bdev/lvol/vbdev_lvol.c @@ -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; diff --git a/lib/bdev/part.c b/lib/bdev/part.c index 99fd368a3..5ee06ac7c 100644 --- a/lib/bdev/part.c +++ b/lib/bdev/part.c @@ -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; diff --git a/lib/bdev/passthru/vbdev_passthru.c b/lib/bdev/passthru/vbdev_passthru.c index f97810d49..47e4ccc0a 100644 --- a/lib/bdev/passthru/vbdev_passthru.c +++ b/lib/bdev/passthru/vbdev_passthru.c @@ -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); diff --git a/test/unit/lib/bdev/bdev.c/bdev_ut.c b/test/unit/lib/bdev/bdev.c/bdev_ut.c index ff52a05dc..dcdd90296 100644 --- a/test/unit/lib/bdev/bdev.c/bdev_ut.c +++ b/test/unit/lib/bdev/bdev.c/bdev_ut.c @@ -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]); diff --git a/test/unit/lib/bdev/compress.c/compress_ut.c b/test/unit/lib/bdev/compress.c/compress_ut.c index b3037664d..970c4828d 100644 --- a/test/unit/lib/bdev/compress.c/compress_ut.c +++ b/test/unit/lib/bdev/compress.c/compress_ut.c @@ -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, diff --git a/test/unit/lib/bdev/crypto.c/crypto_ut.c b/test/unit/lib/bdev/crypto.c/crypto_ut.c index a5a9dd96f..c0674077c 100644 --- a/test/unit/lib/bdev/crypto.c/crypto_ut.c +++ b/test/unit/lib/bdev/crypto.c/crypto_ut.c @@ -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 */ 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 30af336e0..4811d8147 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 @@ -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);