The test 31 starts i/o to 128 zones in parallel.
There are two corner cases that are not properly handled in the
existing implementation -
1) If the total number of zones on the device is < 128, the test
will loop indefinitely because the loop increment is calculated as
zero by the script.
2) If the number of max_open_zones of the device is < 128, the
test will fail due to exceeding max_open_zones limit as the code
expects it to be >= 128.
Limit the number of open zones to the reported maximum
and skip the test if there is not enough zones on the device.
Signed-off-by: Dmitry Fomichev <dmitry.fomichev@wdc.com>
Reviewed-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
local bs inc nz off opts size
prep_write
- # Start with writing 128 KB to 128 sequential zones.
+ # Start with writing 128 KB to max_open_zones sequential zones.
bs=128K
- nz=128
+ nz=$((max_open_zones))
+ if [[ $nz -eq 0 ]]; then
+ nz=128
+ fi
# shellcheck disable=SC2017
inc=$(((disk_size - (first_sequential_zone_sector * 512)) / (nz * zone_size)
* zone_size))
+ if [ "$inc" -eq 0 ]; then
+ require_seq_zones $nz || return $SKIP_TESTCASE
+ fi
opts=()
for ((off = first_sequential_zone_sector * 512; off < disk_size;
off += inc)); do