Re: [LTP] [PATCH v2 1/2] lib: tst_test: Add per filesystem mkfs and mount opts

Petr Vorel
2025-03-21T06:42:13Z

Hi Li,

> On Fri, Mar 21, 2025 at 1:31 AM Petr Vorel <pvorel@suse.cz> wrote:

> > Hi Cyril, all,

> > > This commit does:

> > > * Group the filesystem type, mkfs and mount options into a separate
> > > structure

> > > * Add an array of these structures to be able to define per filesystem
> > > mkfs and mount options

> > > The details on the usage should be hopefully clear from the
> > > documentation comments for the struct tst_test.

> > FYI, this merged as cce6188916 ("lib: tst_test: Add per filesystem mkfs and
> > mount opts") causes this behavior of none testing run when there is no
> > suitable
> > filesystem. I found it when trying to bisect something with rapido-linux
> > and
> > compile kernel without Btrfs and XFS. Don't we want to add some TCONF?

> I think we need TCONF there. Can you confirm below change makes sense?

Thanks! LGTM (untested). Can you please send a patch? (I'll test it).

Kind regards,
Petr

> --- a/lib/tst_test.c
> +++ b/lib/tst_test.c
> @@ -1856,6 +1856,7 @@ static int run_tcases_per_fs(void)
> int ret = 0;
> unsigned int i;
> const char *const *filesystems =
> tst_get_supported_fs_types(tst_test->skip_filesystems);
> + bool found_valid_fs = false;

> if (!filesystems[0])
> tst_brk(TCONF, "There are no supported filesystems");
> @@ -1866,6 +1867,7 @@ static int run_tcases_per_fs(void)
> if (!fs)
> continue;

> + found_valid_fs = true;
> ret = run_tcase_on_fs(fs, filesystems[i]);

> if (ret == TCONF)
> @@ -1877,6 +1879,9 @@ static int run_tcases_per_fs(void)
> do_exit(ret);
> }

> + if (!found_valid_fs)
> + tst_brk(TCONF, "No required filesystems are available");
> +
> return ret;
> }

> > Kind regards,
> > Petr

> > ioctl_ficlone03.c:
> > .filesystems = (struct tst_fs []) {
> > {.type = "btrfs"},
> > {.type = "bcachefs"},
> > {
> > .type = "xfs",
> > .min_kver = "4.16",
> > .mkfs_ver = "mkfs.xfs >= 1.5.0",
> > .mkfs_opts = (const char *const []) {"-m",
> > "reflink=1", NULL},
> > },
> > {}
> > },

> > rapido1:/opt/ltp/testcases/bin# ./ioctl_ficlone03; echo $?
> > tst_buffers.c:57: TINFO: Test is using guarded buffers
> > tst_tmpdir.c:317: TINFO: Using /tmp/LTP_iocSKLS9l as tmpdir (tmpfs
> > filesystem)
> > tst_device.c:99: TINFO: Found free device 0 '/dev/loop0'
> > tst_test.c:1900: TINFO: LTP version: 20250130-166-g17960d952
> > tst_test.c:1904: TINFO: Tested kernel: 4.5.0-00002-g22bd332f11d4 #162 SMP
> > Thu Mar 20 18:00:10 CET 2025 x86_64
> > tst_kconfig.c:88: TINFO: Parsing kernel config '/.config'
> > tst_test.c:1724: TINFO: Overall timeout per run is 0h 00m 31s
> > tst_supported_fs_types.c:97: TINFO: Kernel supports ext2
> > tst_supported_fs_types.c:62: TINFO: mkfs.ext2 does exist
> > tst_supported_fs_types.c:97: TINFO: Kernel supports ext3
> > tst_supported_fs_types.c:62: TINFO: mkfs.ext3 does exist
> > tst_supported_fs_types.c:97: TINFO: Kernel supports ext4
> > tst_supported_fs_types.c:62: TINFO: mkfs.ext4 does exist
> > tst_supported_fs_types.c:105: TINFO: Skipping bcachefs because of FUSE
> > blacklist
> > tst_supported_fs_types.c:97: TINFO: Kernel supports vfat
> > tst_supported_fs_types.c:62: TINFO: mkfs.vfat does exist
> > tst_supported_fs_types.c:97: TINFO: Kernel supports tmpfs
> > tst_supported_fs_types.c:49: TINFO: mkfs is not needed for tmpfs

> > Summary:
> > passed 0
> > failed 0
> > broken 0
> > skipped 0
> > warnings 0
> > 0

> > rapido1:/opt/ltp/testcases/bin# grep -e CONFIG_BTRFS_FS -e CONFIG_XFS_FS
> > /.config
> > + grep -e CONFIG_BTRFS_FS -e CONFIG_XFS_FS /.config
> > # CONFIG_XFS_FS is not set
> > # CONFIG_BTRFS_FS is not set