ut/bdev/raid: Use cached pointer to expected output in IO verification
Use cached pointer to g_io_output in IO verification to improve readability. Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Change-Id: I71ced5d1e438d5046b9a5913a1a2860f8435d79b Reviewed-on: https://review.gerrithub.io/c/spdk/spdk/+/464485 Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Broadcom SPDK FC-NVMe CI <spdk-ci.pdl@broadcom.com> Reviewed-by: Changpeng Liu <changpeng.liu@intel.com> Tested-by: SPDK CI Jenkins <sys_sgci@intel.com>
This commit is contained in:
parent
2b015b7a26
commit
47155be6f3
@ -643,6 +643,7 @@ verify_reset_io(struct spdk_bdev_io *bdev_io, uint8_t num_base_drives,
|
||||
struct raid_bdev_io_channel *ch_ctx, struct raid_bdev *raid_bdev, uint32_t io_status)
|
||||
{
|
||||
uint8_t index = 0;
|
||||
struct io_output *output;
|
||||
|
||||
SPDK_CU_ASSERT_FATAL(raid_bdev != NULL);
|
||||
SPDK_CU_ASSERT_FATAL(num_base_drives != 0);
|
||||
@ -651,9 +652,10 @@ verify_reset_io(struct spdk_bdev_io *bdev_io, uint8_t num_base_drives,
|
||||
|
||||
CU_ASSERT(g_io_output_index == num_base_drives);
|
||||
for (index = 0; index < g_io_output_index; index++) {
|
||||
CU_ASSERT(ch_ctx->base_channel[index] == g_io_output[index].ch);
|
||||
CU_ASSERT(raid_bdev->base_bdev_info[index].desc == g_io_output[index].desc);
|
||||
CU_ASSERT(bdev_io->type == g_io_output[index].iotype);
|
||||
output = &g_io_output[index];
|
||||
CU_ASSERT(ch_ctx->base_channel[index] == output->ch);
|
||||
CU_ASSERT(raid_bdev->base_bdev_info[index].desc == output->desc);
|
||||
CU_ASSERT(bdev_io->type == output->iotype);
|
||||
}
|
||||
CU_ASSERT(g_io_comp_status == io_status);
|
||||
}
|
||||
@ -675,6 +677,7 @@ verify_io(struct spdk_bdev_io *bdev_io, uint8_t num_base_drives,
|
||||
uint64_t pd_blocks;
|
||||
uint32_t index = 0;
|
||||
uint8_t *buf = bdev_io->u.bdev.iovs->iov_base;
|
||||
struct io_output *output;
|
||||
|
||||
if (io_status == INVALID_IO_SUBMIT) {
|
||||
CU_ASSERT(g_io_comp_status == false);
|
||||
@ -703,11 +706,12 @@ verify_io(struct spdk_bdev_io *bdev_io, uint8_t num_base_drives,
|
||||
pd_lba = pd_strip << raid_bdev->strip_size_shift;
|
||||
pd_blocks = raid_bdev->strip_size;
|
||||
}
|
||||
CU_ASSERT(pd_lba == g_io_output[index].offset_blocks);
|
||||
CU_ASSERT(pd_blocks == g_io_output[index].num_blocks);
|
||||
CU_ASSERT(ch_ctx->base_channel[pd_idx] == g_io_output[index].ch);
|
||||
CU_ASSERT(raid_bdev->base_bdev_info[pd_idx].desc == g_io_output[index].desc);
|
||||
CU_ASSERT(bdev_io->type == g_io_output[index].iotype);
|
||||
output = &g_io_output[index];
|
||||
CU_ASSERT(pd_lba == output->offset_blocks);
|
||||
CU_ASSERT(pd_blocks == output->num_blocks);
|
||||
CU_ASSERT(ch_ctx->base_channel[pd_idx] == output->ch);
|
||||
CU_ASSERT(raid_bdev->base_bdev_info[pd_idx].desc == output->desc);
|
||||
CU_ASSERT(bdev_io->type == output->iotype);
|
||||
buf += (pd_blocks << spdk_u32log2(g_block_len));
|
||||
}
|
||||
CU_ASSERT(g_io_comp_status == io_status);
|
||||
@ -732,6 +736,7 @@ verify_io_without_payload(struct spdk_bdev_io *bdev_io, uint8_t num_base_drives,
|
||||
uint8_t disk_idx;
|
||||
uint64_t base_io_idx;
|
||||
uint64_t sum_nblocks = 0;
|
||||
struct io_output *output;
|
||||
|
||||
if (io_status == INVALID_IO_SUBMIT) {
|
||||
CU_ASSERT(g_io_comp_status == false);
|
||||
@ -747,6 +752,7 @@ verify_io_without_payload(struct spdk_bdev_io *bdev_io, uint8_t num_base_drives,
|
||||
|
||||
start_strip_disk_idx = start_strip % num_base_drives;
|
||||
end_strip_disk_idx = end_strip % num_base_drives;
|
||||
|
||||
offset_in_start_disk = g_io_output[0].offset_blocks;
|
||||
nblocks_in_start_disk = g_io_output[0].num_blocks;
|
||||
|
||||
@ -755,6 +761,8 @@ verify_io_without_payload(struct spdk_bdev_io *bdev_io, uint8_t num_base_drives,
|
||||
uint64_t start_offset_in_disk;
|
||||
uint64_t end_offset_in_disk;
|
||||
|
||||
output = &g_io_output[base_io_idx];
|
||||
|
||||
/* round disk_idx */
|
||||
if (disk_idx >= num_base_drives) {
|
||||
disk_idx %= num_base_drives;
|
||||
@ -764,7 +772,7 @@ verify_io_without_payload(struct spdk_bdev_io *bdev_io, uint8_t num_base_drives,
|
||||
* The first base io has a same start_offset_in_strip with the whole raid io.
|
||||
* Other base io should have aligned start_offset_in_strip which is 0.
|
||||
*/
|
||||
start_offset_in_disk = g_io_output[base_io_idx].offset_blocks;
|
||||
start_offset_in_disk = output->offset_blocks;
|
||||
if (base_io_idx == 0) {
|
||||
CU_ASSERT(start_offset_in_disk % g_strip_size == start_offset_in_strip);
|
||||
} else {
|
||||
@ -775,8 +783,7 @@ verify_io_without_payload(struct spdk_bdev_io *bdev_io, uint8_t num_base_drives,
|
||||
* Base io on disk at which end_strip is located, has a same end_offset_in_strip with the whole raid io.
|
||||
* Other base io should have aligned end_offset_in_strip.
|
||||
*/
|
||||
end_offset_in_disk = g_io_output[base_io_idx].offset_blocks +
|
||||
g_io_output[base_io_idx].num_blocks - 1;
|
||||
end_offset_in_disk = output->offset_blocks + output->num_blocks - 1;
|
||||
if (disk_idx == end_strip_disk_idx) {
|
||||
CU_ASSERT(end_offset_in_disk % g_strip_size == end_offset_in_strip);
|
||||
} else {
|
||||
@ -794,23 +801,23 @@ verify_io_without_payload(struct spdk_bdev_io *bdev_io, uint8_t num_base_drives,
|
||||
CU_ASSERT(offset_in_start_disk - start_offset_in_disk < g_strip_size);
|
||||
} else if (disk_idx < start_strip_disk_idx) {
|
||||
CU_ASSERT(start_offset_in_disk > offset_in_start_disk);
|
||||
CU_ASSERT(g_io_output[base_io_idx].offset_blocks - offset_in_start_disk <= g_strip_size);
|
||||
CU_ASSERT(output->offset_blocks - offset_in_start_disk <= g_strip_size);
|
||||
}
|
||||
|
||||
/* nblocks compared with start_disk:
|
||||
* The gap between them must be within a strip size.
|
||||
*/
|
||||
if (g_io_output[base_io_idx].num_blocks <= nblocks_in_start_disk) {
|
||||
CU_ASSERT(nblocks_in_start_disk - g_io_output[base_io_idx].num_blocks <= g_strip_size);
|
||||
if (output->num_blocks <= nblocks_in_start_disk) {
|
||||
CU_ASSERT(nblocks_in_start_disk - output->num_blocks <= g_strip_size);
|
||||
} else {
|
||||
CU_ASSERT(g_io_output[base_io_idx].num_blocks - nblocks_in_start_disk < g_strip_size);
|
||||
CU_ASSERT(output->num_blocks - nblocks_in_start_disk < g_strip_size);
|
||||
}
|
||||
|
||||
sum_nblocks += g_io_output[base_io_idx].num_blocks;
|
||||
sum_nblocks += output->num_blocks;
|
||||
|
||||
CU_ASSERT(ch_ctx->base_channel[disk_idx] == g_io_output[base_io_idx].ch);
|
||||
CU_ASSERT(raid_bdev->base_bdev_info[disk_idx].desc == g_io_output[base_io_idx].desc);
|
||||
CU_ASSERT(bdev_io->type == g_io_output[base_io_idx].iotype);
|
||||
CU_ASSERT(ch_ctx->base_channel[disk_idx] == output->ch);
|
||||
CU_ASSERT(raid_bdev->base_bdev_info[disk_idx].desc == output->desc);
|
||||
CU_ASSERT(bdev_io->type == output->iotype);
|
||||
}
|
||||
|
||||
/* Sum of each nblocks should be same with raid bdev_io */
|
||||
|
Loading…
Reference in New Issue
Block a user