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

Zorro Lang via ltp
2024-12-09T09:49:42Z

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?

Thanks,
Zorro

>
> Kind regards,
> Petr
>
> > Thanks,
> > Zorro
>
> --
> Mailing list info: https://lists.linux.it/listinfo/ltp
>