diff --git a/test/unit/lib/bdev/bdev_raid.c/bdev_raid_ut.c b/test/unit/lib/bdev/bdev_raid.c/bdev_raid_ut.c index a1b62bb42..738ce38e7 100644 --- a/test/unit/lib/bdev/bdev_raid.c/bdev_raid_ut.c +++ b/test/unit/lib/bdev/bdev_raid.c/bdev_raid_ut.c @@ -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 */