test: a bit more thorough io check in bdevio
initialize_buffer() uses memset() with a static pattern that won't be able to detect issues such as writing/reading only the first iov entry. This commit adds counter at the beginning of every block to help detect such errors. Signed-off-by: Denis Barakhtanov <denis.barahtanov@croit.io> Change-Id: I6c497c707c8ae6a279c0222fdd4a1cf398c3b34c Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/15582 Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
b535d15d84
commit
97455abea2
@ -185,10 +185,18 @@ bdevio_cleanup_targets(void)
|
|||||||
static bool g_completion_success;
|
static bool g_completion_success;
|
||||||
|
|
||||||
static void
|
static void
|
||||||
initialize_buffer(char **buf, int pattern, int size)
|
initialize_buffer(char **buf, int pattern, int size, uint32_t block_size)
|
||||||
{
|
{
|
||||||
|
CU_ASSERT(block_size != 0);
|
||||||
|
|
||||||
*buf = spdk_zmalloc(size, 0x1000, NULL, SPDK_ENV_LCORE_ID_ANY, SPDK_MALLOC_DMA);
|
*buf = spdk_zmalloc(size, 0x1000, NULL, SPDK_ENV_LCORE_ID_ANY, SPDK_MALLOC_DMA);
|
||||||
memset(*buf, pattern, size);
|
memset(*buf, pattern, size);
|
||||||
|
|
||||||
|
if (pattern) {
|
||||||
|
for (int offset = 0, block = 0; offset < size; offset += block_size, block++) {
|
||||||
|
*(*buf + offset) = block;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -448,7 +456,7 @@ blockdev_write_read_data_match(char *rx_buf, char *tx_buf, int data_length)
|
|||||||
|
|
||||||
static void
|
static void
|
||||||
blockdev_write_read(uint32_t data_length, uint32_t iov_len, int pattern, uint64_t offset,
|
blockdev_write_read(uint32_t data_length, uint32_t iov_len, int pattern, uint64_t offset,
|
||||||
int expected_rc, bool write_zeroes)
|
int expected_rc, bool write_zeroes, uint32_t block_size)
|
||||||
{
|
{
|
||||||
struct io_target *target;
|
struct io_target *target;
|
||||||
char *tx_buf = NULL;
|
char *tx_buf = NULL;
|
||||||
@ -473,13 +481,13 @@ blockdev_write_read(uint32_t data_length, uint32_t iov_len, int pattern, uint64_
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!write_zeroes) {
|
if (!write_zeroes) {
|
||||||
initialize_buffer(&tx_buf, pattern, write_data_len);
|
initialize_buffer(&tx_buf, pattern, write_data_len, block_size);
|
||||||
initialize_buffer(&rx_buf, 0, data_length);
|
initialize_buffer(&rx_buf, 0, data_length, block_size);
|
||||||
|
|
||||||
blockdev_write(target, tx_buf, write_offset, write_data_len, iov_len);
|
blockdev_write(target, tx_buf, write_offset, write_data_len, iov_len);
|
||||||
} else {
|
} else {
|
||||||
initialize_buffer(&tx_buf, 0, write_data_len);
|
initialize_buffer(&tx_buf, 0, write_data_len, block_size);
|
||||||
initialize_buffer(&rx_buf, pattern, data_length);
|
initialize_buffer(&rx_buf, pattern, data_length, block_size);
|
||||||
|
|
||||||
blockdev_write_zeroes(target, tx_buf, write_offset, write_data_len);
|
blockdev_write_zeroes(target, tx_buf, write_offset, write_data_len);
|
||||||
}
|
}
|
||||||
@ -512,17 +520,17 @@ blockdev_write_read(uint32_t data_length, uint32_t iov_len, int pattern, uint64_
|
|||||||
static void
|
static void
|
||||||
blockdev_compare_and_write(uint32_t data_length, uint32_t iov_len, uint64_t offset)
|
blockdev_compare_and_write(uint32_t data_length, uint32_t iov_len, uint64_t offset)
|
||||||
{
|
{
|
||||||
struct io_target *target;
|
struct io_target *target = g_current_io_target;
|
||||||
|
struct spdk_bdev *bdev = target->bdev;
|
||||||
char *tx_buf = NULL;
|
char *tx_buf = NULL;
|
||||||
char *write_buf = NULL;
|
char *write_buf = NULL;
|
||||||
char *rx_buf = NULL;
|
char *rx_buf = NULL;
|
||||||
int rc;
|
int rc;
|
||||||
|
const uint32_t block_size = spdk_bdev_get_block_size(bdev);
|
||||||
|
|
||||||
target = g_current_io_target;
|
initialize_buffer(&tx_buf, 0xAA, data_length, block_size);
|
||||||
|
initialize_buffer(&rx_buf, 0, data_length, block_size);
|
||||||
initialize_buffer(&tx_buf, 0xAA, data_length);
|
initialize_buffer(&write_buf, 0xBB, data_length, block_size);
|
||||||
initialize_buffer(&rx_buf, 0, data_length);
|
|
||||||
initialize_buffer(&write_buf, 0xBB, data_length);
|
|
||||||
|
|
||||||
blockdev_write(target, tx_buf, offset, data_length, iov_len);
|
blockdev_write(target, tx_buf, offset, data_length, iov_len);
|
||||||
CU_ASSERT_EQUAL(g_completion_success, true);
|
CU_ASSERT_EQUAL(g_completion_success, true);
|
||||||
@ -554,9 +562,10 @@ blockdev_write_read_block(void)
|
|||||||
int expected_rc;
|
int expected_rc;
|
||||||
struct io_target *target = g_current_io_target;
|
struct io_target *target = g_current_io_target;
|
||||||
struct spdk_bdev *bdev = target->bdev;
|
struct spdk_bdev *bdev = target->bdev;
|
||||||
|
const uint32_t block_size = spdk_bdev_get_block_size(bdev);
|
||||||
|
|
||||||
/* Data size = 1 block */
|
/* Data size = 1 block */
|
||||||
data_length = spdk_bdev_get_block_size(bdev);
|
data_length = block_size;
|
||||||
CU_ASSERT_TRUE(data_length < BUFFER_SIZE);
|
CU_ASSERT_TRUE(data_length < BUFFER_SIZE);
|
||||||
offset = 0;
|
offset = 0;
|
||||||
pattern = 0xA3;
|
pattern = 0xA3;
|
||||||
@ -564,7 +573,7 @@ blockdev_write_read_block(void)
|
|||||||
* of write and read for all blockdevs is 0. */
|
* of write and read for all blockdevs is 0. */
|
||||||
expected_rc = 0;
|
expected_rc = 0;
|
||||||
|
|
||||||
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 0);
|
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 0, block_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -576,16 +585,17 @@ blockdev_write_zeroes_read_block(void)
|
|||||||
int expected_rc;
|
int expected_rc;
|
||||||
struct io_target *target = g_current_io_target;
|
struct io_target *target = g_current_io_target;
|
||||||
struct spdk_bdev *bdev = target->bdev;
|
struct spdk_bdev *bdev = target->bdev;
|
||||||
|
const uint32_t block_size = spdk_bdev_get_block_size(bdev);
|
||||||
|
|
||||||
/* Data size = 1 block */
|
/* Data size = 1 block */
|
||||||
data_length = spdk_bdev_get_block_size(bdev);
|
data_length = block_size;
|
||||||
offset = 0;
|
offset = 0;
|
||||||
pattern = 0xA3;
|
pattern = 0xA3;
|
||||||
/* Params are valid, hence the expected return value
|
/* Params are valid, hence the expected return value
|
||||||
* of write_zeroes and read for all blockdevs is 0. */
|
* of write_zeroes and read for all blockdevs is 0. */
|
||||||
expected_rc = 0;
|
expected_rc = 0;
|
||||||
|
|
||||||
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 1);
|
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 1, block_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -600,17 +610,18 @@ blockdev_write_zeroes_read_no_split(void)
|
|||||||
int expected_rc;
|
int expected_rc;
|
||||||
struct io_target *target = g_current_io_target;
|
struct io_target *target = g_current_io_target;
|
||||||
struct spdk_bdev *bdev = target->bdev;
|
struct spdk_bdev *bdev = target->bdev;
|
||||||
|
const uint32_t block_size = spdk_bdev_get_block_size(bdev);
|
||||||
|
|
||||||
/* Data size = block size aligned ZERO_BUFFER_SIZE */
|
/* Data size = block size aligned ZERO_BUFFER_SIZE */
|
||||||
data_length = ZERO_BUFFER_SIZE; /* from bdev_internal.h */
|
data_length = ZERO_BUFFER_SIZE; /* from bdev_internal.h */
|
||||||
data_length -= ZERO_BUFFER_SIZE % spdk_bdev_get_block_size(bdev);
|
data_length -= ZERO_BUFFER_SIZE % block_size;
|
||||||
offset = 0;
|
offset = 0;
|
||||||
pattern = 0xA3;
|
pattern = 0xA3;
|
||||||
/* Params are valid, hence the expected return value
|
/* Params are valid, hence the expected return value
|
||||||
* of write_zeroes and read for all blockdevs is 0. */
|
* of write_zeroes and read for all blockdevs is 0. */
|
||||||
expected_rc = 0;
|
expected_rc = 0;
|
||||||
|
|
||||||
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 1);
|
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 1, block_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -626,17 +637,18 @@ blockdev_write_zeroes_read_split(void)
|
|||||||
int expected_rc;
|
int expected_rc;
|
||||||
struct io_target *target = g_current_io_target;
|
struct io_target *target = g_current_io_target;
|
||||||
struct spdk_bdev *bdev = target->bdev;
|
struct spdk_bdev *bdev = target->bdev;
|
||||||
|
const uint32_t block_size = spdk_bdev_get_block_size(bdev);
|
||||||
|
|
||||||
/* Data size = block size aligned 3 * ZERO_BUFFER_SIZE */
|
/* Data size = block size aligned 3 * ZERO_BUFFER_SIZE */
|
||||||
data_length = 3 * ZERO_BUFFER_SIZE; /* from bdev_internal.h */
|
data_length = 3 * ZERO_BUFFER_SIZE; /* from bdev_internal.h */
|
||||||
data_length -= data_length % spdk_bdev_get_block_size(bdev);
|
data_length -= data_length % block_size;
|
||||||
offset = 0;
|
offset = 0;
|
||||||
pattern = 0xA3;
|
pattern = 0xA3;
|
||||||
/* Params are valid, hence the expected return value
|
/* Params are valid, hence the expected return value
|
||||||
* of write_zeroes and read for all blockdevs is 0. */
|
* of write_zeroes and read for all blockdevs is 0. */
|
||||||
expected_rc = 0;
|
expected_rc = 0;
|
||||||
|
|
||||||
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 1);
|
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 1, block_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -665,7 +677,7 @@ blockdev_write_zeroes_read_split_partial(void)
|
|||||||
* of write_zeroes and read for all blockdevs is 0. */
|
* of write_zeroes and read for all blockdevs is 0. */
|
||||||
expected_rc = 0;
|
expected_rc = 0;
|
||||||
|
|
||||||
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 1);
|
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 1, block_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -677,9 +689,10 @@ blockdev_writev_readv_block(void)
|
|||||||
int expected_rc;
|
int expected_rc;
|
||||||
struct io_target *target = g_current_io_target;
|
struct io_target *target = g_current_io_target;
|
||||||
struct spdk_bdev *bdev = target->bdev;
|
struct spdk_bdev *bdev = target->bdev;
|
||||||
|
const uint32_t block_size = spdk_bdev_get_block_size(bdev);
|
||||||
|
|
||||||
/* Data size = 1 block */
|
/* Data size = 1 block */
|
||||||
data_length = spdk_bdev_get_block_size(bdev);
|
data_length = block_size;
|
||||||
iov_len = data_length;
|
iov_len = data_length;
|
||||||
CU_ASSERT_TRUE(data_length < BUFFER_SIZE);
|
CU_ASSERT_TRUE(data_length < BUFFER_SIZE);
|
||||||
offset = 0;
|
offset = 0;
|
||||||
@ -688,7 +701,7 @@ blockdev_writev_readv_block(void)
|
|||||||
* of write and read for all blockdevs is 0. */
|
* of write and read for all blockdevs is 0. */
|
||||||
expected_rc = 0;
|
expected_rc = 0;
|
||||||
|
|
||||||
blockdev_write_read(data_length, iov_len, pattern, offset, expected_rc, 0);
|
blockdev_write_read(data_length, iov_len, pattern, offset, expected_rc, 0, block_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -739,7 +752,7 @@ blockdev_writev_readv_30x1block(void)
|
|||||||
* of write and read for all blockdevs is 0. */
|
* of write and read for all blockdevs is 0. */
|
||||||
expected_rc = 0;
|
expected_rc = 0;
|
||||||
|
|
||||||
blockdev_write_read(data_length, iov_len, pattern, offset, expected_rc, 0);
|
blockdev_write_read(data_length, iov_len, pattern, offset, expected_rc, 0, block_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -751,9 +764,10 @@ blockdev_write_read_8blocks(void)
|
|||||||
int expected_rc;
|
int expected_rc;
|
||||||
struct io_target *target = g_current_io_target;
|
struct io_target *target = g_current_io_target;
|
||||||
struct spdk_bdev *bdev = target->bdev;
|
struct spdk_bdev *bdev = target->bdev;
|
||||||
|
const uint32_t block_size = spdk_bdev_get_block_size(bdev);
|
||||||
|
|
||||||
/* Data size = 8 * block size */
|
/* Data size = 8 * block size */
|
||||||
data_length = spdk_bdev_get_block_size(bdev) * 8;
|
data_length = block_size * 8;
|
||||||
CU_ASSERT_TRUE(data_length < BUFFER_SIZE);
|
CU_ASSERT_TRUE(data_length < BUFFER_SIZE);
|
||||||
offset = data_length;
|
offset = data_length;
|
||||||
pattern = 0xA3;
|
pattern = 0xA3;
|
||||||
@ -761,7 +775,7 @@ blockdev_write_read_8blocks(void)
|
|||||||
* of write and read for all blockdevs is 0. */
|
* of write and read for all blockdevs is 0. */
|
||||||
expected_rc = 0;
|
expected_rc = 0;
|
||||||
|
|
||||||
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 0);
|
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 0, block_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -773,9 +787,11 @@ blockdev_writev_readv_8blocks(void)
|
|||||||
int expected_rc;
|
int expected_rc;
|
||||||
struct io_target *target = g_current_io_target;
|
struct io_target *target = g_current_io_target;
|
||||||
struct spdk_bdev *bdev = target->bdev;
|
struct spdk_bdev *bdev = target->bdev;
|
||||||
|
const uint32_t block_size = spdk_bdev_get_block_size(bdev);
|
||||||
|
|
||||||
|
|
||||||
/* Data size = 8 * block size */
|
/* Data size = 8 * block size */
|
||||||
data_length = spdk_bdev_get_block_size(bdev) * 8;
|
data_length = block_size * 8;
|
||||||
iov_len = data_length;
|
iov_len = data_length;
|
||||||
CU_ASSERT_TRUE(data_length < BUFFER_SIZE);
|
CU_ASSERT_TRUE(data_length < BUFFER_SIZE);
|
||||||
offset = data_length;
|
offset = data_length;
|
||||||
@ -784,7 +800,7 @@ blockdev_writev_readv_8blocks(void)
|
|||||||
* of write and read for all blockdevs is 0. */
|
* of write and read for all blockdevs is 0. */
|
||||||
expected_rc = 0;
|
expected_rc = 0;
|
||||||
|
|
||||||
blockdev_write_read(data_length, iov_len, pattern, offset, expected_rc, 0);
|
blockdev_write_read(data_length, iov_len, pattern, offset, expected_rc, 0, block_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -809,7 +825,7 @@ blockdev_write_read_size_gt_128k(void)
|
|||||||
* of write and read for all blockdevs is 0. */
|
* of write and read for all blockdevs is 0. */
|
||||||
expected_rc = 0;
|
expected_rc = 0;
|
||||||
|
|
||||||
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 0);
|
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 0, block_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -835,7 +851,7 @@ blockdev_writev_readv_size_gt_128k(void)
|
|||||||
* of write and read for all blockdevs is 0. */
|
* of write and read for all blockdevs is 0. */
|
||||||
expected_rc = 0;
|
expected_rc = 0;
|
||||||
|
|
||||||
blockdev_write_read(data_length, iov_len, pattern, offset, expected_rc, 0);
|
blockdev_write_read(data_length, iov_len, pattern, offset, expected_rc, 0, block_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -861,7 +877,7 @@ blockdev_writev_readv_size_gt_128k_two_iov(void)
|
|||||||
* of write and read for all blockdevs is 0. */
|
* of write and read for all blockdevs is 0. */
|
||||||
expected_rc = 0;
|
expected_rc = 0;
|
||||||
|
|
||||||
blockdev_write_read(data_length, iov_len, pattern, offset, expected_rc, 0);
|
blockdev_write_read(data_length, iov_len, pattern, offset, expected_rc, 0, block_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -884,7 +900,7 @@ blockdev_write_read_invalid_size(void)
|
|||||||
* of write and read for all blockdevs is < 0 */
|
* of write and read for all blockdevs is < 0 */
|
||||||
expected_rc = -1;
|
expected_rc = -1;
|
||||||
|
|
||||||
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 0);
|
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 0, block_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -909,7 +925,7 @@ blockdev_write_read_offset_plus_nbytes_equals_bdev_size(void)
|
|||||||
* of write and read for all blockdevs is 0. */
|
* of write and read for all blockdevs is 0. */
|
||||||
expected_rc = 0;
|
expected_rc = 0;
|
||||||
|
|
||||||
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 0);
|
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 0, block_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -936,7 +952,7 @@ blockdev_write_read_offset_plus_nbytes_gt_bdev_size(void)
|
|||||||
* of write and read for all blockdevs is < 0 */
|
* of write and read for all blockdevs is < 0 */
|
||||||
expected_rc = -1;
|
expected_rc = -1;
|
||||||
|
|
||||||
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 0);
|
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 0, block_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -948,8 +964,9 @@ blockdev_write_read_max_offset(void)
|
|||||||
int expected_rc;
|
int expected_rc;
|
||||||
struct io_target *target = g_current_io_target;
|
struct io_target *target = g_current_io_target;
|
||||||
struct spdk_bdev *bdev = target->bdev;
|
struct spdk_bdev *bdev = target->bdev;
|
||||||
|
const uint32_t block_size = spdk_bdev_get_block_size(bdev);
|
||||||
|
|
||||||
data_length = spdk_bdev_get_block_size(bdev);
|
data_length = block_size;
|
||||||
CU_ASSERT_TRUE(data_length < BUFFER_SIZE);
|
CU_ASSERT_TRUE(data_length < BUFFER_SIZE);
|
||||||
/* The start offset has been set to UINT64_MAX such that
|
/* The start offset has been set to UINT64_MAX such that
|
||||||
* adding nbytes wraps around and points to an invalid address. */
|
* adding nbytes wraps around and points to an invalid address. */
|
||||||
@ -959,7 +976,7 @@ blockdev_write_read_max_offset(void)
|
|||||||
* of write and read for all blockdevs is < 0 */
|
* of write and read for all blockdevs is < 0 */
|
||||||
expected_rc = -1;
|
expected_rc = -1;
|
||||||
|
|
||||||
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 0);
|
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 0, block_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -971,9 +988,10 @@ blockdev_overlapped_write_read_2blocks(void)
|
|||||||
int expected_rc;
|
int expected_rc;
|
||||||
struct io_target *target = g_current_io_target;
|
struct io_target *target = g_current_io_target;
|
||||||
struct spdk_bdev *bdev = target->bdev;
|
struct spdk_bdev *bdev = target->bdev;
|
||||||
|
const uint32_t block_size = spdk_bdev_get_block_size(bdev);
|
||||||
|
|
||||||
/* Data size = 2 blocks */
|
/* Data size = 2 blocks */
|
||||||
data_length = spdk_bdev_get_block_size(bdev) * 2;
|
data_length = block_size * 2;
|
||||||
CU_ASSERT_TRUE(data_length < BUFFER_SIZE);
|
CU_ASSERT_TRUE(data_length < BUFFER_SIZE);
|
||||||
offset = 0;
|
offset = 0;
|
||||||
pattern = 0xA3;
|
pattern = 0xA3;
|
||||||
@ -982,7 +1000,7 @@ blockdev_overlapped_write_read_2blocks(void)
|
|||||||
expected_rc = 0;
|
expected_rc = 0;
|
||||||
/* Assert the write by comparing it with values read
|
/* Assert the write by comparing it with values read
|
||||||
* from the same offset for each blockdev */
|
* from the same offset for each blockdev */
|
||||||
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 0);
|
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 0, block_size);
|
||||||
|
|
||||||
/* Overwrite the pattern 0xbb of size 2*block size on an address offset
|
/* Overwrite the pattern 0xbb of size 2*block size on an address offset
|
||||||
* overlapping with the address written above and assert the new value in
|
* overlapping with the address written above and assert the new value in
|
||||||
@ -993,7 +1011,7 @@ blockdev_overlapped_write_read_2blocks(void)
|
|||||||
offset = spdk_bdev_get_block_size(bdev);
|
offset = spdk_bdev_get_block_size(bdev);
|
||||||
/* Assert the write by comparing it with values read
|
/* Assert the write by comparing it with values read
|
||||||
* from the overlapped offset for each blockdev */
|
* from the overlapped offset for each blockdev */
|
||||||
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 0);
|
blockdev_write_read(data_length, 0, pattern, offset, expected_rc, 0, block_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@ -1188,18 +1206,19 @@ blockdev_test_copy(void)
|
|||||||
char *tx_buf = NULL;
|
char *tx_buf = NULL;
|
||||||
char *rx_buf = NULL;
|
char *rx_buf = NULL;
|
||||||
int rc;
|
int rc;
|
||||||
|
const uint32_t block_size = spdk_bdev_get_block_size(bdev);
|
||||||
|
|
||||||
if (!spdk_bdev_io_type_supported(target->bdev, SPDK_BDEV_IO_TYPE_COPY)) {
|
if (!spdk_bdev_io_type_supported(target->bdev, SPDK_BDEV_IO_TYPE_COPY)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
data_length = spdk_bdev_get_block_size(bdev);
|
data_length = block_size;
|
||||||
CU_ASSERT_TRUE(data_length < BUFFER_SIZE);
|
CU_ASSERT_TRUE(data_length < BUFFER_SIZE);
|
||||||
src_offset = 0;
|
src_offset = 0;
|
||||||
dst_offset = spdk_bdev_get_block_size(bdev);
|
dst_offset = block_size;
|
||||||
|
|
||||||
initialize_buffer(&tx_buf, 0xAA, data_length);
|
initialize_buffer(&tx_buf, 0xAA, data_length, block_size);
|
||||||
initialize_buffer(&rx_buf, 0, data_length);
|
initialize_buffer(&rx_buf, 0, data_length, block_size);
|
||||||
|
|
||||||
blockdev_write(target, tx_buf, src_offset, data_length, data_length);
|
blockdev_write(target, tx_buf, src_offset, data_length, data_length);
|
||||||
CU_ASSERT_EQUAL(g_completion_success, true);
|
CU_ASSERT_EQUAL(g_completion_success, true);
|
||||||
|
Loading…
Reference in New Issue
Block a user