[LTP] [PATCH 1/3] ioctl_ficlone02.c: set all_filesystems to zero

Petr Vorel pvorel@suse.cz
Mon Dec 9 11:42:28 CET 2024


> On Mon, Dec 09, 2024 at 07:14:16AM +0100, Petr Vorel wrote:
> > > On Mon, Dec 02, 2024 at 03:42:08PM +0100, Petr Vorel wrote:
> > > > > Hi!
> > > > > > The code to skip filesystems in the case of all filesystems is in the
> > > > > > run_tcase_per_fs() function:

> > > > > > 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);

> > > > > > The skip_filesystems array is passed to the tst_get_supporte_fs_types()
> > > > > > function which filters out them.

> > > > > Perhaps you mean that the skiplist does not work with .all_filesystems
> > > > > _and_ the LTP_SINGLE_FS_TYPE environment variable?

> > > > > I guess that we need:

> > > > > diff --git a/lib/tst_supported_fs_types.c b/lib/tst_supported_fs_types.c
> > > > > index bbbb8df19..49b1d7205 100644
> > > > > --- a/lib/tst_supported_fs_types.c
> > > > > +++ b/lib/tst_supported_fs_types.c
> > > > > @@ -159,6 +159,10 @@ const char **tst_get_supported_fs_types(const char *const *skiplist)

> > > > >         if (only_fs) {
> > > > >                 tst_res(TINFO, "WARNING: testing only %s", only_fs);
> > > > > +
> > > > > +               if (tst_fs_in_skiplist(only_fs, skiplist))
> > > > > +                       tst_brk(TCONF, "Requested filesystems is in test skiplist");
> > > > > +

> > > > It's a nice feature to be able to force testing on filesystem even it's set to
> > > > be skipped without need to manually enable the filesystem and recompile.
> > > > (It helps testing with LTP compiled as a package without need to compile LTP.)
> > > > Therefore I would avoid this.

> > > > @Zorro Lang or are you testing whole syscalls on particular filesystem via
> > > > LTP_SINGLE_FS_TYPE=xfs ?

> > > Oh, yes, I always use LTP with different LTP_SINGLE_FS_TYPE. So that's might be
> > > the problem?

> > Thanks for confirming your use case.

> > Well, "Testing only" in the help (-h) was added there to suggest it's for
> > testing/debugging LTP, not a production testing. But newer mind, I'll implement
> > Cyril's suggestion, real usage justify it. + I'll add LTP_FORCE_SINGLE_FS_TYPE.

> > We could allow more filesystems, e.g.  instead of running LTP few times with
> > different LTP_SINGLE_FS_TYPE value: e.g.

> > for fs in ext4 xfs btrfs; do LTP_SINGLE_FS_TYPE=fs ioctl_ficlone02; done

> > we could introduce support for particular filesystems
> > LTP_FILESYSTEMS="ext4,xfs,btrfs" ioctl_ficlone02

> > (Probably define new variable because "SINGLE" is misleading when supporting
> > more filesystems. Also when we touch it, I would consider renaming variable
> > FILESYSTEMS is more obvious for newcomers than "FS_TYPE".)

> > WDYT?

> I generally mount a known filesystem on /mnt/ltpdir, and specify "-d /mnt/ltpdir"
> (to be TMPDIR). Then set (export)
>   LTP_SINGLE_FS_TYPE
>   LTP_DEV_FS_TYPE
>   LTP_BIG_DEV_FS_TYPE
> to be the same fs with the one mounted on $TMPDIR. Then run ltp more likes:

>   for cmdfile in fs fs_perms_simple syscalls fs_bind fsx mm commands fcntl-locktests fs_readonly ipc io containers cve smoketest syscalls-ipc dio ltp-aiodio.part1 ltp-aiodio.part2 ltp-aiodio.part3 ltp-aiodio.part4 ltp-aio-stress; do
> 	runltp  -p -d /mnt/ltpdir -b /dev/loop0 -B xfs -z /dev/loop1 -Z xfs -f $cmdfile ...
>   done

> I do this to test each filesystem in different test jobs. Each test job test one fs.
> I think that might make sure all system calls/IOs test on same filesystem, no matter
> on TMPDIR or someone device. Am I right? Or I missunderstand something?

IMHO we intended slightly different behavior:

point TMPDIR to the filesystem you are interested in (e.g. /var/tmp for openSUSE
to test Btrfs instead of tmpfs).
Most of the tests are filesystem agnostic (not related to file/filesystem or
using common VFS code), thus this setup is ok (just to avoid testing tmpfs which
is in RAM instead of real block device). Running these tests "manually" for all
filesystems should be waste of time. If you see different results, it might mean
that some system should use .all_filesystems = 1.

These tests where filesystem matters should use .all_filesystems = 1 setup, thus
they run on all available filesystems. You just need to make sure that SUT has
required dependencies (mkfs.* binary and filesystem configured in kernel).

Kind regards,
Petr

> Thanks,
> Zorro


> > Kind regards,
> > Petr

> > > Thanks,
> > > Zorro

> > -- 
> > Mailing list info: https://lists.linux.it/listinfo/ltp



More information about the ltp mailing list