Commit 2aeee546 authored by Tomasz Zawadzki's avatar Tomasz Zawadzki
Browse files

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: default avatarTomasz 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: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
Reviewed-by: default avatarAleksey Marchuk <alexeymar@mellanox.com>
Reviewed-by: default avatarShuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Reviewed-by: default avatarKonrad Sztyber <konrad.sztyber@intel.com>
parent 074a63d5
Loading
Loading
Loading
Loading
+14 −4
Original line number Diff line number Diff line
@@ -124,6 +124,9 @@ spdk_bdev_alias_del_all(struct spdk_bdev *bdev)
void
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
@@ -261,16 +264,23 @@ spdk_bs_bdev_claim(struct spdk_bs_dev *bs_dev, struct spdk_bdev_module *module)
	return 0;
}

static void
_spdk_bdev_unregister_cb(void *cb_arg, int rc)
{
	CU_ASSERT(rc == 0);
}

void
spdk_bdev_unregister(struct spdk_bdev *vbdev, spdk_bdev_unregister_cb cb_fn, void *cb_arg)
{
	int rc;

	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);
	cb_fn(cb_arg, rc);
	rc = vbdev->fn_table->destruct(vbdev->ctxt);
	CU_ASSERT(rc == 1);
}

void
@@ -1070,7 +1080,7 @@ ut_lvol_destroy(void)
	CU_ASSERT(g_lvolerrno == 0);

	/* Hot remove lvol bdev */
	vbdev_lvol_unregister(lvol2);
	spdk_bdev_unregister(lvol2->bdev, _spdk_bdev_unregister_cb, NULL);

	/* Unload lvol store */
	vbdev_lvs_unload(lvs, lvol_store_op_complete, NULL);