From 7778964025e60b8972b2aced42a2f5d676b7b0dd Mon Sep 17 00:00:00 2001 From: Shin'ichiro Kawasaki Date: Mon, 14 Nov 2022 11:13:05 +0900 Subject: [PATCH] t/zbd: modify test case #34 for block size unaligned to zone size The test case #34 confirmed that the block size unaligned to zone size is handled as an error. After recent fix, now fio is able to handle such block sizes, then the check for the error is no longer required. Instead of removing this unnecessary test case, change it to cover verify with complex workload. It runs random write workload with high queue depth with verify. Use two types of block sizes unaligned to zone size. This test workload is same as test case #57 except the verify option and block sizes. Signed-off-by: Shin'ichiro Kawasaki Signed-off-by: Vincent Fu --- t/zbd/test-zbd-support | 28 +++++++++++++++++++--------- 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/t/zbd/test-zbd-support b/t/zbd/test-zbd-support index debe3763..37af6724 100755 --- a/t/zbd/test-zbd-support +++ b/t/zbd/test-zbd-support @@ -826,17 +826,27 @@ test33() { check_written $((io_size / bs * bs)) || return $? } -# Write to sequential zones with a block size that is not a divisor of the -# zone size and with data verification enabled. +# Test repeated async write job with verify using two unaligned block sizes. test34() { - local size + local bs off zone_capacity + local -a block_sizes - prep_write - size=$((2 * zone_size)) - run_fio_on_seq "$(ioengine "psync")" --iodepth=1 --rw=write --size=$size \ - --do_verify=1 --verify=md5 --bs=$((3 * zone_size / 4)) \ - >> "${logfile}.${test_number}" 2>&1 && return 1 - grep -q 'not a divisor of' "${logfile}.${test_number}" + require_zbd || return $SKIP_TESTCASE + prep_write + + off=$((first_sequential_zone_sector * 512)) + zone_capacity=$(total_zone_capacity 1 $off $dev) + block_sizes=($((4096 * 7)) $(($(min ${zone_capacity} 4194304) - 4096))) + + for bs in ${block_sizes[@]}; do + run_fio --name=job --filename="${dev}" --rw=randwrite \ + --bs="${bs}" --offset="${off}" \ + --size=$((4 * zone_size)) --iodepth=256 \ + "$(ioengine "libaio")" --time_based=1 --runtime=15s \ + --zonemode=zbd --direct=1 --zonesize="${zone_size}" \ + --verify=crc32c --do_verify=1 ${job_var_opts[@]} \ + >> "${logfile}.${test_number}" 2>&1 || return $? + done } # Test 1/4 for the I/O boundary rounding code: $size < $zone_size. -- 2.25.1