[PATCH 1/4] fstests: add missing checks of fallocate feature

Johannes Thumshirn
2021-04-23T11:26:43Z

From: Naohiro Aota <naohiro.aota@wdc.com>

Many test cases use xfs_io -c 'falloc' but forgot to add
_require_xfs_io_command "falloc". This will fail the test case if we run
the test case on a file system without fallcoate support e.g. F2FS.

While we believe that normal fallocate(mode = 0) is always supported on
Linux, it is not true. Fallocate is disabled in several implementations of
zoned block support for file systems because the pre-allocated region will
break the sequential writing rule.

Currently, several test cases unconditionally call fallocate(). Let's add
_require_xfs_io_command "falloc" to properly check the feature is supported
by a testing file system.

Signed-off-by: Naohiro Aota <naohiro.aota@wdc.com>
---
tests/btrfs/013 | 1 +
tests/btrfs/016 | 1 +
tests/btrfs/025 | 1 +
tests/btrfs/034 | 1 +
tests/btrfs/037 | 1 +
tests/btrfs/046 | 1 +
tests/btrfs/107 | 1 +
tests/ext4/001 | 1 +
tests/f2fs/001 | 1 +
tests/generic/456 | 1 +
tests/xfs/042 | 1 +
tests/xfs/114 | 1 +
tests/xfs/118 | 1 +
tests/xfs/331 | 1 +
tests/xfs/341 | 1 +
tests/xfs/342 | 1 +
tests/xfs/423 | 1 +
17 files changed, 17 insertions(+)

diff --git a/tests/btrfs/013 b/tests/btrfs/013
index 9252c82a2076..5e03ed4a4b4b 100755
--- a/tests/btrfs/013
+++ b/tests/btrfs/013
@@ -33,6 +33,7 @@ trap "_cleanup ; exit \$status" 0 1 2 3 15
# real QA test starts here
_supported_fs btrfs
_require_scratch
+_require_xfs_io_command "falloc"

rm -f $seqres.full

diff --git a/tests/btrfs/016 b/tests/btrfs/016
index 8fd237cbdb64..015ec17f93d6 100755
--- a/tests/btrfs/016
+++ b/tests/btrfs/016
@@ -35,6 +35,7 @@ _supported_fs btrfs
_require_test
_require_scratch
_require_fssum
+_require_xfs_io_command "falloc"

_scratch_mkfs > /dev/null 2>&1

diff --git a/tests/btrfs/025 b/tests/btrfs/025
index 42cd7cefe825..5c8140552bfb 100755
--- a/tests/btrfs/025
+++ b/tests/btrfs/025
@@ -31,6 +31,7 @@ _cleanup()
# real QA test starts here
_supported_fs btrfs
_require_scratch
+_require_xfs_io_command "falloc"

rm -f $seqres.full

diff --git a/tests/btrfs/034 b/tests/btrfs/034
index bc7a4aae3886..07c84c347d3b 100755
--- a/tests/btrfs/034
+++ b/tests/btrfs/034
@@ -28,6 +28,7 @@ _cleanup()
# real QA test starts here
_supported_fs btrfs
_require_scratch
+_require_xfs_io_command "falloc"

rm -f $seqres.full

diff --git a/tests/btrfs/037 b/tests/btrfs/037
index 1cfaf5be58c8..9ef199a93413 100755
--- a/tests/btrfs/037
+++ b/tests/btrfs/037
@@ -35,6 +35,7 @@ _cleanup()
# real QA test starts here
_supported_fs btrfs
_require_scratch
+_require_xfs_io_command "falloc"

rm -f $seqres.full

diff --git a/tests/btrfs/046 b/tests/btrfs/046
index 882db8eacc4e..a1d82e1cdd54 100755
--- a/tests/btrfs/046
+++ b/tests/btrfs/046
@@ -37,6 +37,7 @@ _cleanup()
_supported_fs btrfs
_require_test
_require_scratch
+_require_xfs_io_command "falloc"
_require_fssum

rm -f $seqres.full
diff --git a/tests/btrfs/107 b/tests/btrfs/107
index e57c9dead499..80db5ab9822d 100755
--- a/tests/btrfs/107
+++ b/tests/btrfs/107
@@ -34,6 +34,7 @@ rm -f $seqres.full

_supported_fs btrfs
_require_scratch
+_require_xfs_io_command "falloc"

# Use 64K file size to match any sectorsize
# And with a unaligned tailing range to ensure it will be at least 2 pages
diff --git a/tests/ext4/001 b/tests/ext4/001
index bbb74f1ea5bc..9650303d15b5 100755
--- a/tests/ext4/001
+++ b/tests/ext4/001
@@ -29,6 +29,7 @@ trap "_cleanup ; exit \$status" 0 1 2 3 15

# real QA test starts here
_supported_fs ext4
+_require_xfs_io_command "falloc"
_require_xfs_io_command "fzero"
_require_test

diff --git a/tests/f2fs/001 b/tests/f2fs/001
index 98bd2682d60f..0753a09b5576 100755
--- a/tests/f2fs/001
+++ b/tests/f2fs/001
@@ -36,6 +36,7 @@ _cleanup()

_supported_fs f2fs
_require_scratch
+_require_xfs_io_command "falloc"

testfile=$SCRATCH_MNT/testfile
dummyfile=$SCRATCH_MNT/dummyfile
diff --git a/tests/generic/456 b/tests/generic/456
index 2f9df5e5edc4..65667d449dd3 100755
--- a/tests/generic/456
+++ b/tests/generic/456
@@ -38,6 +38,7 @@ trap "_cleanup; exit \$status" 0 1 2 3 15
# real QA test starts here
_supported_fs generic
_require_scratch
+_require_xfs_io_command "falloc"
_require_dm_target flakey
_require_xfs_io_command "falloc" "-k"
_require_xfs_io_command "fzero"
diff --git a/tests/xfs/042 b/tests/xfs/042
index b55d642c5170..fcd5181cf590 100755
--- a/tests/xfs/042
+++ b/tests/xfs/042
@@ -31,6 +31,7 @@ trap "_cleanup ; exit \$status" 0 1 2 3 15

# real QA test starts here
_supported_fs xfs
+_require_xfs_io_command "falloc"

_require_scratch

diff --git a/tests/xfs/114 b/tests/xfs/114
index b936452461c6..3f5575a61dfb 100755
--- a/tests/xfs/114
+++ b/tests/xfs/114
@@ -32,6 +32,7 @@ _cleanup()
_supported_fs xfs
_require_test_program "punch-alternating"
_require_xfs_scratch_rmapbt
+_require_xfs_io_command "falloc"
_require_xfs_io_command "fcollapse"
_require_xfs_io_command "finsert"

diff --git a/tests/xfs/118 b/tests/xfs/118
index 5e23617b39dd..9a431821aa62 100755
--- a/tests/xfs/118
+++ b/tests/xfs/118
@@ -41,6 +41,7 @@ _supported_fs xfs

_require_scratch
_require_command "$XFS_FSR_PROG" "xfs_fsr"
+_require_xfs_io_command "falloc"

# 50M
_scratch_mkfs_sized $((50 * 1024 * 1024)) >> $seqres.full 2>&1
diff --git a/tests/xfs/331 b/tests/xfs/331
index 4ea54e2a534b..8e92b2e36a8d 100755
--- a/tests/xfs/331
+++ b/tests/xfs/331
@@ -33,6 +33,7 @@ _require_xfs_scratch_rmapbt
_require_scratch_reflink
_require_xfs_io_command "falloc"
_require_test_program "punch-alternating"
+_require_xfs_io_command "falloc"

rm -f "$seqres.full"

diff --git a/tests/xfs/341 b/tests/xfs/341
index e1fbe588d9eb..8bf05087e1ba 100755
--- a/tests/xfs/341
+++ b/tests/xfs/341
@@ -31,6 +31,7 @@ _require_realtime
_require_xfs_scratch_rmapbt
_require_test_program "punch-alternating"
_disable_dmesg_check
+_require_xfs_io_command "falloc"

rm -f "$seqres.full"

diff --git a/tests/xfs/342 b/tests/xfs/342
index 2be5f7698f01..4db222d65fb2 100755
--- a/tests/xfs/342
+++ b/tests/xfs/342
@@ -30,6 +30,7 @@ _supported_fs xfs
_require_realtime
_require_xfs_scratch_rmapbt
_require_test_program "punch-alternating"
+_require_xfs_io_command "falloc"

rm -f "$seqres.full"

diff --git a/tests/xfs/423 b/tests/xfs/423
index 8d51a9a60585..183c9cf5eded 100755
--- a/tests/xfs/423
+++ b/tests/xfs/423
@@ -35,6 +35,7 @@ _cleanup()
_supported_fs xfs
_require_test_program "punch-alternating"
_require_xfs_io_command "scrub"
+_require_xfs_io_command "falloc"
_require_scratch

echo "Format and populate"
--
2.30.0