t/zbd: avoid test case 31 failure with small devices master
authorShin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Tue, 30 Apr 2024 10:30:22 +0000 (19:30 +0900)
committerVincent Fu <vincent.fu@samsung.com>
Tue, 30 Apr 2024 15:11:58 +0000 (11:11 -0400)
The test case assumed that the test target devices have 128 or more
sequential write required zones and uses 128 as the minimum number of
zones to write. This caused failure when the devices had a smaller
number of sequential write required zones. To avoid the failure, count
the actual number of sequential write required zones and use it if it is
smaller than 128.

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Link: https://lore.kernel.org/r/20240430103022.4136039-4-shinichiro.kawasaki@wdc.com
Signed-off-by: Vincent Fu <vincent.fu@samsung.com>
t/zbd/test-zbd-support

index ef98835cb8f4cc693ec3afecd239fd04ead0fe50..e0b2a755018f5b21a9a29c6002eb1ff4498ef9f5 100755 (executable)
@@ -852,12 +852,15 @@ test31() {
     # To distribute the write target zones evenly, skip certain zones for every
     # write. Utilize zonemode strided for such write patterns.
     bs=$((128 * 1024))
+    off=$((first_sequential_zone_sector * 512))
+    size=$((disk_size - off))
     nz=$((max_open_zones))
     if [[ $nz -eq 0 ]]; then
        nz=128
     fi
-    off=$((first_sequential_zone_sector * 512))
-    size=$((disk_size - off))
+    if ((size / zone_size < nz)); then
+       nz=$((size / zone_size))
+    fi
     inc=$(((size / nz / zone_size) * zone_size))
     opts=("--name=$dev" "--filename=$dev" "--rw=write" "--bs=${bs}")
     opts+=("--offset=$off" "--size=$((inc * nz))" "--io_size=$((bs * nz))")