[LTP] quotactl0{2, 3, 5, 7}.c dependency problems on older kernels
Petr Vorel
pvorel@suse.cz
Fri Mar 18 09:51:00 CET 2022
Hi Xu,
> Hi Petr
> > Hi Xu,
> > actually quotactl0{2,3,5,7}.c and quotactl03.c fail on only on v4.5:
> > tst_kconfig.c:82: TINFO: Parsing kernel config '/.config'
> > tst_device.c:88: TINFO: Found free device 0 '/dev/loop0'
> > tst_test.c:996: TINFO: Formatting /dev/loop0 with xfs opts='' extra opts=''
> > [ 271.093416] XFS (loop0): Superblock has unknown read-only compatible features (0x4) enabled.
> > [ 271.096902] XFS (loop0): Attempted to mount read-only compatible filesystem read-write.
> > [ 271.100128] XFS (loop0): Filesystem can only be safely mounted read only.
> > [ 271.101852] XFS (loop0): SB validate failed with error -22.
> > tst_test.c:1010: TBROK: mount(/dev/loop0, mntpoint, xfs, 0, 0x41d6a0) failed: EINVAL (22)
> That is because you use a newer xfsprogs (it provides newer mkfs.xfs and
> enable reflink feature by default[1]). But older kernel can't regcozine
> this feature bits[2](it supports reflink feature bits since kernel
> 4.9-rc1), then mount failed.
> [1]https://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git/commit/?id=ec1b42e6d58dcb7cfc5de6fc825832944997e176
> [2]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=f0ec1b8ef11df0a51954df7e3ff3ca4aadb0d34b
> I don't think this is a problem, user should know its kernel version
> and xfsprogs vesion. Linux distribution has sloved this well except you
> used yourself compiled kernel.
TL;DR: Understand and we can stop debugging to not waste time.
Giving userspace tool needs to match kernel brings extra barrier when bisecting
in the history :). I suppose there is no list to match these (actually it'd be
better to ask on linux-xfs). I'd have to experiment with slightly older ones -
I'm using mkfs.xfs 5.14.2 from openSUSE Tumbleweed (i.e. latest stable).
> > Tested on config:
> > grep -e QUOTA -e QFMT /.config
> > CONFIG_XFS_QUOTA=y
> > CONFIG_QUOTA=y
> > CONFIG_QUOTA_NETLINK_INTERFACE=y
> > # CONFIG_PRINT_QUOTA_WARNING is not set
> > # CONFIG_QUOTA_DEBUG is not set
> > CONFIG_QUOTA_TREE=y
> > # CONFIG_QFMT_V1 is not set
> > CONFIG_QFMT_V2=y
> > CONFIG_QUOTACTL=y
> > CONFIG_QUOTACTL_COMPAT=y
> > But not work either on v4.10:
> > [ 299.235456] XFS (loop0): EXPERIMENTAL reflink feature enabled. Use at your own risk!
> > [ 299.239463] XFS (loop0): Mounting V5 Filesystem
> > [ 299.240950] XFS (loop0): Log size 1368 blocks too small, minimum size is 1580 blocks
> In xfstests, we use -lsize parameter[3] or use a value then get the
> correct value from error log[4]. reflink feature will increase log
> size[5], so we can disable reflink feature by using mkfs.xfs -m
> reflink=0 /dev/loop0 (it also need mkfs.xfs support, so we may need a
> mkfs.xfs cmd version check[5], if meet this version, use mkfs.xfs -m
> reflink=0, if less than this version, we can ignore this version and
> don't use mkfs.xfs extra option).
> Firstly, can you try mkfs.xfs -m reflink=0 way whether fix these two
> problems?
Yes, adding .dev_fs_opts:
@@ -84,6 +88,12 @@ static struct tst_test test = {
.test_all = verify_quota,
.format_device = 1,
.dev_fs_type = "xfs",
+ .dev_fs_opts = (const char *const[]){
+ "-m",
+ "reflink=0",
+ NULL,
+ },
+
... helps to quotactl0{2,3,5,7}.c helps to all:
quotactl0{2,3,5}.c TPASS/TCONF:
tst_test.c:996: TINFO: Formatting /dev/loop0 with xfs opts='-m reflink=0' extra opts=''
[ 55.193262] XFS (loop0): Mounting V5 Filesystem
[ 55.197574] XFS (loop0): Ending clean mount
[ 55.199560] XFS (loop0): Quotacheck needed: Please wait.
[ 55.202735] XFS (loop0): Quotacheck: Done.
tst_test.c:1456: TINFO: Timeout per run is 0h 05m 00s
quotactl_syscall_var.h:27: TINFO: Test quotactl()
quotactl02.c:119: TINFO: Test #0: QCMD(Q_XGETQSTAT, USRQUOTA) off
quotactl02.h:64: TPASS: quotactl() succeeded to turn off xfs quota and get xfs quota off status for user
...
../../../../include/lapi/quotactl.h:18: TCONF: syscall(443) __NR_quotactl_fd not supported on your arch
quotactl07.c fails on Q_XQUOTARM, but that's correct (missing 3dd4d40b4208 from v5.5)
tst_test.c:996: TINFO: Formatting /dev/loop0 with xfs opts='-m reflink=0' extra opts=''
...
quotactl07.c:37: TPASS: do_quotactl(Q_XQUOTARM,valid_type) passed
quotactl07.c:41: TPASS: Q_XQUOTARM to free space, delta(1)
quotactl07.c:45: TFAIL: do_quotactl(Q_XQUOTARM, invalid_type) succeeded
[ 116.407282] XFS (loop0): Unmounting Filesystem
tst_test.c:1456: TINFO: Timeout per run is 0h 05m 00s
...
../../../../include/lapi/quotactl.h:18: TCONF: syscall(443) __NR_quotactl_fd not supported on your arch
=> not sure if we want to add this "-m reflink=0" to these tests (into
quotactl_syscall_var.h, which they all use).
Kind regards,
Petr
> [3]https://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git/commit/?id=7e07c4bebb08414ca8228ea91bdf57828fd4d110
> [4]https://git.kernel.org/pub/scm/fs/xfs/xfstests-dev.git/tree/common/xfs#n81
> [5]https://git.kernel.org/pub/scm/fs/xfs/xfsprogs-dev.git/commit/?id=a5132d9b3634fb6436d1f06642ceda82e64ea2f5
> Best Regards
> Yang Xu
More information about the ltp
mailing list