]> www.infradead.org Git - users/hch/blktests.git/commitdiff
zbd/005: Provide max_active/open_zones limit to fio command
authorShin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Tue, 29 Dec 2020 00:44:34 +0000 (09:44 +0900)
committerOmar Sandoval <osandov@fb.com>
Mon, 4 Jan 2021 22:57:17 +0000 (14:57 -0800)
When test target zoned block devices have max_open_zones or
max_active_zones limit, high queue depth sequential write in the test
case zbd/005 may result in parallel writes to number of zones beyond the
limit. This causes I/O errors.

To avoid the errors, specify the limit to fio command in the test case.

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
tests/zbd/005

index 1e8962c73f07b04c2904f7ecb3c2ff796f32b91c..a7fb17503b731898e08042a981e0a13bb24abde0 100755 (executable)
@@ -28,7 +28,8 @@ cleanup_fallback_device() {
 test_device() {
        local -i zone_idx
        local -i offset
-       local zbdmode=""
+       local -i moaz
+       local -a zbdmode=()
 
        echo "Running ${TEST_NAME}"
 
@@ -36,11 +37,13 @@ test_device() {
 
        zone_idx=$(_find_first_sequential_zone) || return $?
        offset=$((ZONE_STARTS[zone_idx] * 512))
+       moaz=$(_test_dev_max_open_active_zones)
 
        # If the test target zone has smaller zone capacity than zone size,
-       # enable zonemode=zbd to have fio handle the zone capacity limit.
-       if ((ZONE_CAPS[zone_idx] != ZONE_LENGTHS[zone_idx])); then
-               zbdmode="--zonemode=zbd"
+       # or if the test target device has max open/active zones limit, enable
+       # zonemode=zbd and specify the limit to handle the zone restrictions.
+       if ((ZONE_CAPS[zone_idx] != ZONE_LENGTHS[zone_idx])) || ((moaz)); then
+               zbdmode=("--zonemode=zbd" "--max_open_zones=${moaz}")
        fi
 
        blkzone reset -o "${ZONE_STARTS[zone_idx]}" "${TEST_DEV}"
@@ -51,7 +54,7 @@ test_device() {
        FIO_PERF_FIELDS=("write io" "write iops")
        _fio_perf --filename="${TEST_DEV}" --name zbdwo --rw=write --direct=1 \
                  --ioengine=libaio --iodepth=128 --bs=256k \
-                 --offset="${offset}" ${zbdmode}
+                 --offset="${offset}" "${zbdmode[@]}"
 
        _put_blkzone_report