Commit cec70a60 authored by Shuhei Matsumoto's avatar Shuhei Matsumoto Committed by Jim Harris
Browse files

ut/bdev: Configure bdev size and iobuf for all test cases



The following patches will change spdk_bdev_register() to access iobuf
and bdev's blocklen and blockcnt.
Hence, we have to configure these correctly for alltest cases.

Move ut_init/fini_bdev() up in a file. Add missing ut_init/fini_bdev()
and allocate/free_bdev() calls for some test cases. Add blockcnt and
blocklen to allocate_vbdev().

Signed-off-by: default avatarShuhei Matsumoto <smatsumoto@nvidia.com>
Change-Id: Iccbb1cfe4dcdc4496f15304b5362d76d5296607f
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/17908


Community-CI: Mellanox Build Bot
Reviewed-by: default avatarAleksey Marchuk <alexeymar@nvidia.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent 5bced736
Loading
Loading
Loading
Loading
+61 −50
Original line number Diff line number Diff line
@@ -536,6 +536,40 @@ vbdev_ut_examine_disk(struct spdk_bdev *bdev)
	spdk_bdev_module_examine_done(&vbdev_ut_if);
}

static void
bdev_init_cb(void *arg, int rc)
{
	CU_ASSERT(rc == 0);
}

static void
bdev_fini_cb(void *arg)
{
}

static void
ut_init_bdev(struct spdk_bdev_opts *opts)
{
	int rc;

	if (opts != NULL) {
		rc = spdk_bdev_set_opts(opts);
		CU_ASSERT(rc == 0);
	}
	rc = spdk_iobuf_initialize();
	CU_ASSERT(rc == 0);
	spdk_bdev_initialize(bdev_init_cb, NULL);
	poll_threads();
}

static void
ut_fini_bdev(void)
{
	spdk_bdev_finish(bdev_fini_cb, NULL);
	spdk_iobuf_finish(bdev_fini_cb, NULL);
	poll_threads();
}

static struct spdk_bdev *
allocate_bdev_ctx(char *name, void *ctx)
{
@@ -579,6 +613,8 @@ allocate_vbdev(char *name)
	bdev->name = name;
	bdev->fn_table = &fn_table;
	bdev->module = &vbdev_ut_if;
	bdev->blockcnt = 1024;
	bdev->blocklen = 512;

	rc = spdk_bdev_register(bdev);
	poll_threads();
@@ -701,6 +737,8 @@ open_write_test(void)
	struct spdk_bdev_desc *desc[9] = {};
	int rc;

	ut_init_bdev(NULL);

	/*
	 * Create a tree of bdevs to test various open w/ write cases.
	 *
@@ -826,6 +864,8 @@ open_write_test(void)
	free_bdev(bdev[1]);
	free_bdev(bdev[2]);
	free_bdev(bdev[3]);

	ut_fini_bdev();
}

static void
@@ -836,6 +876,8 @@ claim_test(void)
	int rc;
	uint32_t count;

	ut_init_bdev(NULL);

	/*
	 * A vbdev that uses a read-only bdev may need it to remain read-only.
	 * To do so, it opens the bdev read-only, then claims it without
@@ -878,6 +920,7 @@ claim_test(void)

	spdk_bdev_close(desc);
	free_bdev(bdev);
	ut_fini_bdev();
}

static void
@@ -919,46 +962,44 @@ bytes_to_blocks_test(void)
static void
num_blocks_test(void)
{
	struct spdk_bdev bdev;
	struct spdk_bdev *bdev;
	struct spdk_bdev_desc *desc = NULL;
	int rc;

	memset(&bdev, 0, sizeof(bdev));
	bdev.name = "num_blocks";
	bdev.fn_table = &fn_table;
	bdev.module = &bdev_ut_if;
	spdk_bdev_register(&bdev);
	poll_threads();
	spdk_bdev_notify_blockcnt_change(&bdev, 50);
	ut_init_bdev(NULL);
	bdev = allocate_bdev("num_blocks");

	spdk_bdev_notify_blockcnt_change(bdev, 50);

	/* Growing block number */
	CU_ASSERT(spdk_bdev_notify_blockcnt_change(&bdev, 70) == 0);
	CU_ASSERT(spdk_bdev_notify_blockcnt_change(bdev, 70) == 0);
	/* Shrinking block number */
	CU_ASSERT(spdk_bdev_notify_blockcnt_change(&bdev, 30) == 0);
	CU_ASSERT(spdk_bdev_notify_blockcnt_change(bdev, 30) == 0);

	rc = spdk_bdev_open_ext("num_blocks", false, bdev_open_cb1, &desc, &desc);
	CU_ASSERT(rc == 0);
	SPDK_CU_ASSERT_FATAL(desc != NULL);
	CU_ASSERT(&bdev == spdk_bdev_desc_get_bdev(desc));
	CU_ASSERT(bdev == spdk_bdev_desc_get_bdev(desc));

	/* Growing block number */
	CU_ASSERT(spdk_bdev_notify_blockcnt_change(&bdev, 80) == 0);
	CU_ASSERT(spdk_bdev_notify_blockcnt_change(bdev, 80) == 0);
	/* Shrinking block number */
	CU_ASSERT(spdk_bdev_notify_blockcnt_change(&bdev, 20) != 0);
	CU_ASSERT(spdk_bdev_notify_blockcnt_change(bdev, 20) != 0);

	g_event_type1 = 0xFF;
	/* Growing block number */
	CU_ASSERT(spdk_bdev_notify_blockcnt_change(&bdev, 90) == 0);
	CU_ASSERT(spdk_bdev_notify_blockcnt_change(bdev, 90) == 0);

	poll_threads();
	CU_ASSERT_EQUAL(g_event_type1, SPDK_BDEV_EVENT_RESIZE);

	g_event_type1 = 0xFF;
	/* Growing block number and closing */
	CU_ASSERT(spdk_bdev_notify_blockcnt_change(&bdev, 100) == 0);
	CU_ASSERT(spdk_bdev_notify_blockcnt_change(bdev, 100) == 0);

	spdk_bdev_close(desc);
	spdk_bdev_unregister(&bdev, NULL, NULL);
	free_bdev(bdev);
	ut_fini_bdev();

	poll_threads();

@@ -1002,6 +1043,8 @@ alias_add_del_test(void)
	struct spdk_bdev *bdev[3];
	int rc;

	ut_init_bdev(NULL);

	/* Creating and registering bdevs */
	bdev[0] = allocate_bdev("bdev0");
	SPDK_CU_ASSERT_FATAL(bdev[0] != 0);
@@ -1082,6 +1125,8 @@ alias_add_del_test(void)
	free(bdev[0]);
	free(bdev[1]);
	free(bdev[2]);

	ut_fini_bdev();
}

static void
@@ -1098,40 +1143,6 @@ io_done(struct spdk_bdev_io *bdev_io, bool success, void *cb_arg)
	}
}

static void
bdev_init_cb(void *arg, int rc)
{
	CU_ASSERT(rc == 0);
}

static void
bdev_fini_cb(void *arg)
{
}

static void
ut_init_bdev(struct spdk_bdev_opts *opts)
{
	int rc;

	if (opts != NULL) {
		rc = spdk_bdev_set_opts(opts);
		CU_ASSERT(rc == 0);
	}
	rc = spdk_iobuf_initialize();
	CU_ASSERT(rc == 0);
	spdk_bdev_initialize(bdev_init_cb, NULL);
	poll_threads();
}

static void
ut_fini_bdev(void)
{
	spdk_bdev_finish(bdev_fini_cb, NULL);
	spdk_iobuf_finish(bdev_fini_cb, NULL);
	poll_threads();
}

struct bdev_ut_io_wait_entry {
	struct spdk_bdev_io_wait_entry	entry;
	struct spdk_io_channel		*io_ch;