ut/vbdev_lvol: fix spdk_bdev_unregsiter() path

Instead of calling vbdev_lvol_unregister() hooked up
to the destruct callback, use spdk_bdev_unregister()
directly.

The spdk_bdev_unregister() is always asynchronous
and callbacks are delayed until spdk_bdev_destruct_done().
This is now corrected in the stubs.

Signed-off-by: Tomasz Zawadzki <tomasz.zawadzki@intel.com>
Change-Id: I50683c71be80b1baa8bf3b39a05ca631ac527c2e
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/9155
Community-CI: Broadcom CI <spdk-ci.pdl@broadcom.com>
Community-CI: Mellanox Build Bot
Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: Jim Harris <james.r.harris@intel.com>
Reviewed-by: Konrad Sztyber <konrad.sztyber@intel.com>
This commit is contained in:
Tomasz Zawadzki 2021-08-11 03:50:09 -04:00
parent 074a63d507
commit 2aeee54686

View File

@ -124,6 +124,9 @@ spdk_bdev_alias_del_all(struct spdk_bdev *bdev)
void void
spdk_bdev_destruct_done(struct spdk_bdev *bdev, int bdeverrno) spdk_bdev_destruct_done(struct spdk_bdev *bdev, int bdeverrno)
{ {
CU_ASSERT(bdeverrno == 0);
SPDK_CU_ASSERT_FATAL(bdev->internal.unregister_cb != NULL);
bdev->internal.unregister_cb(bdev->internal.unregister_ctx, bdeverrno);
} }
void void
@ -261,16 +264,23 @@ spdk_bs_bdev_claim(struct spdk_bs_dev *bs_dev, struct spdk_bdev_module *module)
return 0; return 0;
} }
static void
_spdk_bdev_unregister_cb(void *cb_arg, int rc)
{
CU_ASSERT(rc == 0);
}
void void
spdk_bdev_unregister(struct spdk_bdev *vbdev, spdk_bdev_unregister_cb cb_fn, void *cb_arg) spdk_bdev_unregister(struct spdk_bdev *vbdev, spdk_bdev_unregister_cb cb_fn, void *cb_arg)
{ {
int rc; int rc;
SPDK_CU_ASSERT_FATAL(vbdev != NULL); SPDK_CU_ASSERT_FATAL(vbdev != NULL);
rc = vbdev->fn_table->destruct(vbdev->ctxt); vbdev->internal.unregister_cb = cb_fn;
vbdev->internal.unregister_ctx = cb_arg;
SPDK_CU_ASSERT_FATAL(cb_fn != NULL); rc = vbdev->fn_table->destruct(vbdev->ctxt);
cb_fn(cb_arg, rc); CU_ASSERT(rc == 1);
} }
void void
@ -1070,7 +1080,7 @@ ut_lvol_destroy(void)
CU_ASSERT(g_lvolerrno == 0); CU_ASSERT(g_lvolerrno == 0);
/* Hot remove lvol bdev */ /* Hot remove lvol bdev */
vbdev_lvol_unregister(lvol2); spdk_bdev_unregister(lvol2->bdev, _spdk_bdev_unregister_cb, NULL);
/* Unload lvol store */ /* Unload lvol store */
vbdev_lvs_unload(lvs, lvol_store_op_complete, NULL); vbdev_lvs_unload(lvs, lvol_store_op_complete, NULL);