[LTP] [PATCH v4 6/6] syscalls/quotactl07: Add quotactl_fd test variant

xuyang2018.jy@fujitsu.com xuyang2018.jy@fujitsu.com
Mon Jan 10 10:03:26 CET 2022


Hi Cyril
> Hi!
>> Also man-pages has error that Q_XQUOTARM was not introduced by kernel
>> 3.16. So use invalid type directly
>
> Have you send a patch to man-pages to get this fixed?
Yes, but offical  man-pages[1] hasn't updated for serval months.
The updates is on alejandro-colomar(man-pages new co-maintainer) main 
branch[2][3].

This patch will get unexpect EINVAL error when kernel commit 40b52225e 
("xfs: remove support for disabling quota accounting on a mounted file 
system")[4] was introduced.

the unexpected EINVAL error position: 
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/fs/xfs/xfs_qm_syscalls.c#n108

if we want to disable quota account feature before Q_XQUOTARM, we must 
need to remount with noquota like xfs maintainer does in xfstests 
xfs/220 [5].


So , I will modify this case as below:

/* Include a valid quota type to avoid other EINVAL error */
static unsigned int invalid_type = XFS_GROUP_QUOTA << 1 | XFS_USER_QUOTA;
static int mount_flag;

static void verify_quota(void)
{
         TEST(do_quotactl(fd, QCMD(Q_XQUOTARM, USRQUOTA), 
tst_device->dev, 0, (void *)&invalid_type));
         if (TST_ERR == EINVAL)
                 tst_res(TPASS, "Q_XQUOTARM has quota type check");
         else
                 tst_res(TFAIL, "Q_XQUOTARM doesn't have quota type check");
}

static void setup(void)
{
         quotactl_info();

         /* ensure superblock has quota data, but not running */
         SAFE_MOUNT(tst_device->dev, MNTPOINT, tst_device->fs_type, 0, 
"usrquota");
         mount_flag = 1;
         SAFE_UMOUNT(MNTPOINT);
         mount_flag = 0;
         SAFE_MOUNT(tst_device->dev, MNTPOINT, tst_device->fs_type, 0, 
"noquota");
         mount_flag = 1;

         fd = SAFE_OPEN(MNTPOINT, O_RDONLY);
}

static void cleanup(void)
{
         if (fd > -1)
                 SAFE_CLOSE(fd);
         if (mount_flag && tst_umount(MNTPOINT))
                 tst_res(TWARN | TERRNO, "umount(%s)", MNTPOINT);
}

static struct tst_test test = {
         .setup = setup,
         .cleanup = cleanup,
         .needs_root = 1,
         .needs_kconfigs = (const char *[]) {
                 "CONFIG_XFS_QUOTA",
                 NULL
         },
         .test_all = verify_quota,
         .format_device = 1,
         .dev_fs_type = "xfs",
         .mntpoint = MNTPOINT,


[1]https://git.kernel.org/pub/scm/docs/man-pages/man-pages.git/
[2]https://github.com/alejandro-colomar/man-pages/commit/38bccbcf4f51c5370a1060e6a80b90d68b0dcdc8
[3]https://github.com/alejandro-colomar/man-pages/commit/26f3978f04a1aeeb5397a5facebaef40a341afb6
[4]https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit?id=40b52225e58cd3adf9358146b4b39dccfbfe5892
[5]https://patchwork.kernel.org/project/fstests/patch/20220105195352.GM656707@magnolia/

I will send a v5 for this patchset and add TST_EXP* usage.

Best Regards
Yang Xu
>
> Reviewed-by: Cyril Hrubis<chrubis@suse.cz>
>


More information about the ltp mailing list