[LTP] [RFC PATCH 1/1] API: Allow to use xfs filesystems < 300 MB

Petr Vorel pvorel@suse.cz
Wed Aug 17 22:40:15 CEST 2022


mkfs.xfs since v5.19.0-rc1 [1] refuses to create filesystems < 300 MB.
Reuse workaround intended for fstests: set 3 environment variables:
export TEST_DIR=1 TEST_DEV=1 QA_CHECK_FS=1

Workaround added to both C API (for .needs_device) and shell API (for
TST_NEEDS_DEVICE=1).

Fix includes any use of filesystem (C API: .all_filesystems,
.format_device, shell API: TST_MOUNT_DEVICE=1, TST_FORMAT_DEVICE=1).

Fixes various C and shell API failures, e.g.:

./mkfs01.sh -f xfs
mkfs01 1 TINFO: timeout per run is 0h 5m 0s
tst_device.c:89: TINFO: Found free device 0 '/dev/loop0'
mkfs01 1 TFAIL: 'mkfs -t xfs  -f /dev/loop0 ' failed.
Filesystem must be larger than 300MB.

./creat09
...
tst_test.c:1599: TINFO: Testing on xfs
tst_test.c:1064: TINFO: Formatting /dev/loop0 with xfs opts='' extra opts=''
Filesystem must be larger than 300MB.

Link: https://lore.kernel.org/all/164738662491.3191861.15611882856331908607.stgit@magnolia/

Reported-by: Martin Doucha <mdoucha@suse.cz>
Signed-off-by: Petr Vorel <pvorel@suse.cz>
---
Dave, please next time remember there are other testsuites testing XFS,
not just fstests :). How long do you plan to keep this workaround?

LTP community: do we want to depend on this behavior or we just increase from 256MB to 301 MB
(either for XFS or for all). It might not be a good idea to test size users are required
to use.

Kind regards,
Petr
 lib/tst_test.c            | 7 +++++++
 testcases/lib/tst_test.sh | 6 +++++-
 2 files changed, 12 insertions(+), 1 deletion(-)

diff --git a/lib/tst_test.c b/lib/tst_test.c
index 4b4dd125d..657348732 100644
--- a/lib/tst_test.c
+++ b/lib/tst_test.c
@@ -1160,6 +1160,13 @@ static void do_setup(int argc, char *argv[])
 	if (tst_test->all_filesystems)
 		tst_test->needs_device = 1;
 
+	/* allow to use XFS filesystem < 300 MB */
+	if (tst_test->needs_device) {
+		putenv("TEST_DIR=1");
+		putenv("TEST_DEV=1");
+		putenv("QA_CHECK_FS=1");
+	}
+
 	if (tst_test->min_cpus > (unsigned long)tst_ncpus())
 		tst_brk(TCONF, "Test needs at least %lu CPUs online", tst_test->min_cpus);
 
diff --git a/testcases/lib/tst_test.sh b/testcases/lib/tst_test.sh
index 24a3d29d8..b42e54ca1 100644
--- a/testcases/lib/tst_test.sh
+++ b/testcases/lib/tst_test.sh
@@ -671,7 +671,11 @@ tst_run()
 
 	[ "$TST_MOUNT_DEVICE" = 1 ] && TST_FORMAT_DEVICE=1
 	[ "$TST_FORMAT_DEVICE" = 1 ] && TST_NEEDS_DEVICE=1
-	[ "$TST_NEEDS_DEVICE" = 1 ] && TST_NEEDS_TMPDIR=1
+	if [ "$TST_NEEDS_DEVICE" = 1 ]; then
+		TST_NEEDS_TMPDIR=1
+		# allow to use XFS filesystem < 300 MB
+		export TEST_DIR=1 TEST_DEV=1 QA_CHECK_FS=1
+	fi
 
 	if [ "$TST_NEEDS_TMPDIR" = 1 ]; then
 		if [ -z "$TMPDIR" ]; then
-- 
2.37.1



More information about the ltp mailing list