From 8f33ef2475dcc4d18ca0d97cb2ae41a714efc6ed Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Thu, 4 Oct 2018 10:52:24 +0900 Subject: [PATCH] ut/bdev: Setup all expected values before starting tested split I/Os Expected values are managed by linked list now. Hence we can set up all expected values before starting tested split I/Os. This change will make the logic clearer. Change-Id: I9226619468220132aebd55a5da36490a145c128a Signed-off-by: Shuhei Matsumoto Reviewed-on: https://review.gerrithub.io/427947 Chandler-Test-Pool: SPDK Automated Test System Tested-by: SPDK CI Jenkins Reviewed-by: Darek Stojaczyk Reviewed-by: Jim Harris Reviewed-by: Ben Walker --- test/unit/lib/bdev/bdev.c/bdev_ut.c | 44 ++++++++++++++--------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/test/unit/lib/bdev/bdev.c/bdev_ut.c b/test/unit/lib/bdev/bdev.c/bdev_ut.c index e28885e2c..b2f61cfdd 100644 --- a/test/unit/lib/bdev/bdev.c/bdev_ut.c +++ b/test/unit/lib/bdev/bdev.c/bdev_ut.c @@ -875,25 +875,25 @@ bdev_io_split(void) * Child - Offset 14, length 2, payload 0xF000 * Child - Offset 16, length 6, payload 0xF000 + 2 * 512 * - * Set up the expected values before calling spdk_bdev_read_blocks, since this call - * will submit the first child immediately. + * Set up the expected values before calling spdk_bdev_read_blocks */ g_io_done = false; expected_io = ut_alloc_expected_io(SPDK_BDEV_IO_TYPE_READ, 14, 2, 1); ut_expected_io_set_iov(expected_io, 0, (void *)0xF000, 2 * 512); TAILQ_INSERT_TAIL(&g_bdev_ut_channel->expected_io, expected_io, link); - rc = spdk_bdev_read_blocks(desc, io_ch, (void *)0xF000, 14, 8, io_done, NULL); - CU_ASSERT(rc == 0); - CU_ASSERT(g_io_done == false); - - /* Now set up the expected values for the second child. The second child will - * get submitted once the first child is completed by stub_complete_io(). - */ expected_io = ut_alloc_expected_io(SPDK_BDEV_IO_TYPE_READ, 16, 6, 1); ut_expected_io_set_iov(expected_io, 0, (void *)(0xF000 + 2 * 512), 6 * 512); TAILQ_INSERT_TAIL(&g_bdev_ut_channel->expected_io, expected_io, link); + /* spdk_bdev_read_blocks will submit the first child immediately. */ + rc = spdk_bdev_read_blocks(desc, io_ch, (void *)0xF000, 14, 8, io_done, NULL); + CU_ASSERT(rc == 0); + CU_ASSERT(g_io_done == false); + + /* The second child will get submitted once the first child is completed by + * stub_complete_io(). + */ CU_ASSERT(g_bdev_ut_channel->outstanding_io_count == 1); stub_complete_io(1); CU_ASSERT(g_io_done == false); @@ -921,23 +921,23 @@ bdev_io_split(void) ut_expected_io_set_iov(expected_io, 1, (void *)0x20000, 512); TAILQ_INSERT_TAIL(&g_bdev_ut_channel->expected_io, expected_io, link); - rc = spdk_bdev_writev_blocks(desc, io_ch, iov, 3, 14, 32, io_done, NULL); - CU_ASSERT(rc == 0); - CU_ASSERT(g_io_done == false); - expected_io = ut_alloc_expected_io(SPDK_BDEV_IO_TYPE_WRITE, 16, 16, 1); ut_expected_io_set_iov(expected_io, 0, (void *)(0x20000 + 512), 16 * 512); TAILQ_INSERT_TAIL(&g_bdev_ut_channel->expected_io, expected_io, link); - CU_ASSERT(g_bdev_ut_channel->outstanding_io_count == 1); - stub_complete_io(1); - CU_ASSERT(g_io_done == false); - expected_io = ut_alloc_expected_io(SPDK_BDEV_IO_TYPE_WRITE, 32, 14, 2); ut_expected_io_set_iov(expected_io, 0, (void *)(0x20000 + 17 * 512), 3 * 512); ut_expected_io_set_iov(expected_io, 1, (void *)0x30000, 11 * 512); TAILQ_INSERT_TAIL(&g_bdev_ut_channel->expected_io, expected_io, link); + rc = spdk_bdev_writev_blocks(desc, io_ch, iov, 3, 14, 32, io_done, NULL); + CU_ASSERT(rc == 0); + CU_ASSERT(g_io_done == false); + + CU_ASSERT(g_bdev_ut_channel->outstanding_io_count == 1); + stub_complete_io(1); + CU_ASSERT(g_io_done == false); + CU_ASSERT(g_bdev_ut_channel->outstanding_io_count == 1); stub_complete_io(1); CU_ASSERT(g_io_done == false); @@ -963,11 +963,6 @@ bdev_io_split(void) } TAILQ_INSERT_TAIL(&g_bdev_ut_channel->expected_io, expected_io, link); - rc = spdk_bdev_readv_blocks(desc, io_ch, iov, BDEV_IO_NUM_CHILD_IOV * 2, 0, - BDEV_IO_NUM_CHILD_IOV * 2, io_done, NULL); - CU_ASSERT(rc == 0); - CU_ASSERT(g_io_done == false); - expected_io = ut_alloc_expected_io(SPDK_BDEV_IO_TYPE_READ, BDEV_IO_NUM_CHILD_IOV, BDEV_IO_NUM_CHILD_IOV, BDEV_IO_NUM_CHILD_IOV); for (i = 0; i < BDEV_IO_NUM_CHILD_IOV; i++) { @@ -976,6 +971,11 @@ bdev_io_split(void) } TAILQ_INSERT_TAIL(&g_bdev_ut_channel->expected_io, expected_io, link); + rc = spdk_bdev_readv_blocks(desc, io_ch, iov, BDEV_IO_NUM_CHILD_IOV * 2, 0, + BDEV_IO_NUM_CHILD_IOV * 2, io_done, NULL); + CU_ASSERT(rc == 0); + CU_ASSERT(g_io_done == false); + CU_ASSERT(g_bdev_ut_channel->outstanding_io_count == 1); stub_complete_io(1); CU_ASSERT(g_io_done == false);