]> www.infradead.org Git - users/hch/blktests.git/commitdiff
zbd/009: check mkfs.btrfs version
authorShin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Mon, 8 Aug 2022 01:44:07 +0000 (10:44 +0900)
committerShin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
Mon, 15 Aug 2022 08:20:32 +0000 (17:20 +0900)
mkfs.btrfs versions from 5.17 to 5.18.x fail to format zoned block
devices without option '-m single' [1]. Skip the test case when
mkfs.btrfs has the versions.

[1] https://lore.kernel.org/linux-btrfs/cover.1659426744.git.wqu@suse.com/

Signed-off-by: Shin'ichiro Kawasaki <shinichiro.kawasaki@wdc.com>
tests/zbd/009

index af430e7d075446e843d1a65d69ced2f273208f56..483cbf677b0fee8937b6b845773198cf99ccece4 100755 (executable)
@@ -8,12 +8,36 @@
 DESCRIPTION="test gap zone support with BTRFS"
 QUICK=1
 
+# compare 3 digits versions (e.g., 5.18.1)
+ver_a_is_before_b() {
+       local a1 a2 a3 b1 b2 b3
+
+       IFS='.' read -r a1 a2 a3 <<< "$1"
+       IFS='.' read -r b1 b2 b3 <<< "$2"
+       (((a1 * 65536 + a2 * 256 + a3) < (b1 * 65536 + b2 * 256 + b3)))
+}
+
+# mkfs.btrfs version from 5.17 to 5.18.x fails to format zoned block devices
+have_good_mkfs_btrfs() {
+       local ver
+
+       ver=$(mkfs.btrfs -V | sed 's/[^[:digit:]]*//')
+       if ver_a_is_before_b "$ver" 5.17; then
+               return 0
+       elif ver_a_is_before_b "$ver" 5.19; then
+               SKIP_REASONS+=("mkfs.btrfs ver $ver fails to format zoned block devices")
+               return 1
+       fi
+       return 0
+}
+
 requires() {
        _have_fio
        _have_driver btrfs
        _have_module_param scsi_debug zone_cap_mb
        _have_program mkfs.btrfs
        _have_scsi_debug
+       have_good_mkfs_btrfs
 }
 
 test() {