t/zbd: Avoid inappropriate blkzone command call in zone_cap_bs
authorShin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Tue, 14 Dec 2021 01:24:13 +0000 (10:24 +0900)
committerJens Axboe <axboe@kernel.dk>
Tue, 14 Dec 2021 13:48:14 +0000 (06:48 -0700)
When the script test-zbd-support is run for regular block devices or
SG nodes, blkzone command shall not be called. However, zone_cap_bs()
helper function calls the command regardless of the zone model or
device type, and results in error messages such as "unable to determine
zone size" or "not a block device". Avoid the command call by returning
the zone size argument passed to this function when the test device is
a regular block device or a SG node.

Fixes: 1ae82d673cf5 ("t/zbd: Align block size to zone capacity")
Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Signed-off-by: Damien Le Moal <damien.lemoal@opensource.wdc.com>
Reviewed-by: Niklas Cassel <niklas.cassel@wdc.com>
Link: https://lore.kernel.org/r/20211214012413.464798-13-damien.lemoal@opensource.wdc.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
t/zbd/functions

index e4e248b9ff26a0c99fe564598455ab4a86d5ac5f..7cff18fd18c0b50ae7ccf961fa665402d258ca71 100644 (file)
@@ -72,9 +72,11 @@ zone_cap_bs() {
        local sed_str='s/.*len \([0-9A-Za-z]*\), cap \([0-9A-Za-z]*\).*/\1 \2/p'
        local cap bs="$zone_size"
 
-       # When blkzone is not available or blkzone does not report capacity,
+       # When blkzone command is neither available nor relevant to the
+       # test device, or when blkzone command does not report capacity,
        # assume that zone capacity is same as zone size for all zones.
-       if [ -z "${blkzone}" ] || ! blkzone_reports_capacity "${dev}"; then
+       if [ -z "${blkzone}" ] || [ -z "$is_zbd" ] || [ -c "$dev" ] ||
+                  ! blkzone_reports_capacity "${dev}"; then
                echo "$zone_size"
                return
        fi