[LTP] [PATCH] lib: LTP_SINGLE_FS_TYPE fix fuse blacklist

Petr Vorel pvorel@suse.cz
Thu May 22 19:31:11 CEST 2025


Hi Cyril, Jan, all,

> The case of LTP_SINGLE_FS_TYPE did not proplerly used the fuse
> filesystem blacklist and we enabled fuse filesystem even for tests that
> explicitly stated in the tst_test structure that they do not work with
> fuse.

> Signed-off-by: Cyril Hrubis <chrubis@suse.cz>
> CC: Jan Polensky <japo@linux.ibm.com>
> ---
>  lib/tst_supported_fs_types.c | 4 +++-
>  1 file changed, 3 insertions(+), 1 deletion(-)

> diff --git a/lib/tst_supported_fs_types.c b/lib/tst_supported_fs_types.c
> index bbbb8df19..3a394283c 100644
> --- a/lib/tst_supported_fs_types.c
> +++ b/lib/tst_supported_fs_types.c
> @@ -158,8 +158,10 @@ const char **tst_get_supported_fs_types(const char *const *skiplist)
>  	only_fs = getenv("LTP_SINGLE_FS_TYPE");

>  	if (only_fs) {
> +		enum tst_fs_impl ret;
>  		tst_res(TINFO, "WARNING: testing only %s", only_fs);
> -		if (tst_fs_is_supported(only_fs))
> +		ret = tst_fs_is_supported(only_fs);
> +		if (ret == TST_FS_KERNEL || (ret == TST_FS_FUSE && !skip_fuse))
>  			fs_types[0] = only_fs;

Is it really good thing to do?
Because LTP_SINGLE_FS_TYPE forces whatever filesystems, it ignores
.skip_filesystems. E.g. creat09.c don't want to be tested on ntfs (and others
but we can force it):

	.skip_filesystems = (const char*[]) {
		"exfat",
		"ntfs",
		"vfat",
		NULL
	},

# LTP_SINGLE_FS_TYPE=ntfs ./creat09
...
tst_supported_fs_types.c:162: TINFO: WARNING: testing only ntfs
tst_supported_fs_types.c:132: TINFO: FUSE does support ntfs
tst_supported_fs_types.c:62: TINFO: mkfs.ntfs does exist
tst_test.c:1887: TINFO: === Testing on ntfs ===
tst_test.c:1216: TINFO: Formatting /dev/loop0 with ntfs opts='' extra opts=''
The partition start sector was not specified for /dev/loop0 and it could not be obtained automatically.  It has been set to 0.
The number of sectors per track was not specified for /dev/loop0 and it could not be obtained automatically.  It has been set to 0.
The number of heads was not specified for /dev/loop0 and it could not be obtained automatically.  It has been set to 0.
To boot from a device, Windows needs the 'partition start sector', the 'sectors per track' and the 'number of heads' to be set.
Windows will not be able to boot from this device.
tst_test.c:1228: TINFO: Mounting /dev/loop0 to /tmp/LTP_creI1VfeG/mntpoint fstyp=ntfs flags=0
tst_test.c:1228: TINFO: Trying FUSE...
creat09.c:71: TINFO: User nobody: uid = 65534, gid = 65534
creat09.c:73: TINFO: Found unused GID 11: SUCCESS (0)
creat09.c:82: TBROK: mntpoint/testdir: Setgid bit not set

If I add "fuse" among .skip_filesystems (NOTE: ntfs on SUT is fuse implementation),
with this patch it gets skipped:

# LTP_SINGLE_FS_TYPE=ntfs ./creat09_skip_fuse
tst_tmpdir.c:316: TINFO: Using /tmp/LTP_creMF902Y as tmpdir (tmpfs filesystem)
tst_device.c:98: TINFO: Found free device 0 '/dev/loop0'
tst_test.c:1952: TINFO: LTP version: 20250130-274-g62559c3849
tst_test.c:1955: TINFO: Tested kernel: 6.12.20-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.12.20-1 (2025-03-23) x86_64
tst_kconfig.c:88: TINFO: Parsing kernel config '/boot/config-6.12.20-amd64'
tst_test.c:1773: TINFO: Overall timeout per run is 0h 00m 31s
tst_supported_fs_types.c:162: TINFO: WARNING: testing only ntfs
tst_supported_fs_types.c:132: TINFO: FUSE does support ntfs
tst_supported_fs_types.c:62: TINFO: mkfs.ntfs does exist
tst_test.c:1916: TCONF: There are no supported filesystems

That's inconsistency.

Could we clearly define what we expect from LTP_SINGLE_FS_TYPE?
FYI I put links to the discussion in the ticket
https://github.com/linux-test-project/ltp/issues/1242

I understand the wish to use LTP_SINGLE_FS_TYPE for a proper testing.  If that
requires to respect .skip_filesystems, but
1) it should be done for all filesystems
2) we should have another variable to allow to force the user defined
filesystem, e.g.
LTP_SINGLE_FS_TYPE=ntfs LTP_SINGLE_FS_TYPE_FORCE_FS=1

Kind regards,
Petr

>  		return fs_types;
>  	}


More information about the ltp mailing list