From patchwork Mon Dec 13 07:26:49 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yang Xu \\(Fujitsu\\)" X-Patchwork-Id: 1567166 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=fujitsu.com header.i=@fujitsu.com header.a=rsa-sha256 header.s=170520fj header.b=qFama2g8; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=213.254.12.146; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Received: from picard.linux.it (picard.linux.it [213.254.12.146]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JCCkN5YfKz9s1l for ; Mon, 13 Dec 2021 18:26:52 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 27E4E3C89AE for ; Mon, 13 Dec 2021 08:26:49 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-4.smtp.seeweb.it (in-4.smtp.seeweb.it [217.194.8.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 506653C2242 for ; Mon, 13 Dec 2021 08:26:37 +0100 (CET) Received: from mail1.bemta36.messagelabs.com (mail1.bemta36.messagelabs.com [85.158.142.112]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-4.smtp.seeweb.it (Postfix) with ESMTPS id 84CE71000D12 for ; Mon, 13 Dec 2021 08:26:36 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.com; s=170520fj; t=1639380396; i=@fujitsu.com; bh=vHOUf4TWSeeY6DEKgXsCROnICzMzUjQzcmVCdHyfRPs=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=qFama2g80kuEhn4IwUPOe8qXNL46x3vKtb9aMbywFIPWZ6fr94JPwQV1UPQSKtKGZ TStwMn16o59WCMomvOEvASebVXDvOR3rUozbVpRuYpa2izcgDAJJ5TUfL1UNB8qHEk yRkOcwrdAU7osZDBkO9E0NEmjPrvR6OJFXPoSAkDI8LMWVK5uraQaEo3zXgl+UgP7+ 3Wv1nQ8B2BKhvFgR5EPoKKX/OwwipnhyQNXp7Yzx1jRI5FA3B8TtSG+1dfx1RHOJk4 IaGY+Lj9+t40hWJC5qy/4kg/KME2f8th5jQwVf9pVF+YnHnZfx61dMRR3yW7wYBej5 C1UX2EMA18nEQ== Received: from [100.115.71.165] (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256 bits)) by server-3.bemta.az-a.eu-central-1.aws.ess.symcld.net id DE/CC-06990-CA5F6B16; Mon, 13 Dec 2021 07:26:36 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrPIsWRWlGSWpSXmKPExsViZ8MxSXfl122 JBlcfGlus+L6D0YHRY9/vdawBjFGsmXlJ+RUJrBn7171mLtjiWzFj0l2mBsYNTl2MXBxCAmcZ Jc61/WWCcHYySez9fZ4VwtnDKHH20i6gDCcHm4CmxLPOBcwgtoiAhERHw1t2EJtZQF1i+aRfQ DUcHMICCRK3PpSBhFkEVCXuXrjEDhLmFfCUONFfCBKWEFCQmPLwPdgUTgEViSnzT7KA2EICyh LTTh4B28QrIChxcuYTFojpEhIHX7xghuhVlLjU8Y0Rwq6QmDWrjQnCVpO4em4T8wRGwVlI2mc haV/AyLSK0S6pKDM9oyQ3MTNH19DAQNfQ0FTXzEzX0NRUL7FKN1EvtVQ3OTWvpCgRKK2XWF6s l1pcrFdcmZuck6KXl1qyiREYyinFTrN3MO7o+6l3iFGSg0lJlPcb49ZEIb6k/JTKjMTijPii0 pzU4kOMMhwcShK8Xl+2JQoJFqWmp1akZeYA4womLcHBoyTC6wqS5i0uSMwtzkyHSJ1iNObYeX TeImaO1y0/dzALseTl56VKifNmgZQKgJRmlObBDYLF+yVGWSlhXkYGBgYhnoLUotzMElT5V4z iHIxKwrwBIFN4MvNK4Pa9AjqFCegUxsrNIKeUJCKkpBqY5hqkaU2eeGHp3kvq1tK/iou7G8qP XJEUM751x7Pu7p+bniEFWyROJAbdy9jyzfS5TBwns+xMB+P0VtZHk9gM9zrLnGKtmS5yJej9y nbh4Glsf/+ym5mzLuScErplO9e15d+aDiiZTVQIPqZisD71YYHM1imn+t7t7eyQujX10c7mPK aTE0vfz9hues5Inu94sPlFrsmxk4Q62IK+PDt2NL7WR+DkdJu1LjqhT0M/OMoE1+3csMvluWJ p7MvEm6x3DrXHnFR6kaIV9XbVz06lNW5fX027WJ178PJ1vhe5beaP+6cdCNc9bNXc2vko3PPG x6usX8pMuGL4+df1nPmSFqq8iVm0QvpFE4f0i9ZmJZbijERDLeai4kQA9p9JbHIDAAA= X-Env-Sender: xuyang2018.jy@fujitsu.com X-Msg-Ref: server-21.tower-545.messagelabs.com!1639380393!180462!1 X-Originating-IP: [62.60.8.146] X-SYMC-ESS-Client-Auth: outbound-route-from=pass X-StarScan-Received: X-StarScan-Version: 9.81.7; banners=-,-,- X-VirusChecked: Checked Received: (qmail 29005 invoked from network); 13 Dec 2021 07:26:33 -0000 Received: from unknown (HELO n03ukasimr02.n03.fujitsu.local) (62.60.8.146) by server-21.tower-545.messagelabs.com with ECDHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 13 Dec 2021 07:26:33 -0000 Received: from n03ukasimr02.n03.fujitsu.local (localhost [127.0.0.1]) by n03ukasimr02.n03.fujitsu.local (Postfix) with ESMTP id 5CB4210033A for ; Mon, 13 Dec 2021 07:26:33 +0000 (GMT) Received: from R01UKEXCASM126.r01.fujitsu.local (unknown [10.183.43.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by n03ukasimr02.n03.fujitsu.local (Postfix) with ESMTPS id 501EB1000FB for ; Mon, 13 Dec 2021 07:26:33 +0000 (GMT) Received: from localhost.localdomain (10.167.220.84) by R01UKEXCASM126.r01.fujitsu.local (10.183.43.178) with Microsoft SMTP Server (TLS) id 15.0.1497.26; Mon, 13 Dec 2021 07:26:20 +0000 From: Yang Xu To: Date: Mon, 13 Dec 2021 15:26:49 +0800 Message-ID: <1639380414-24390-1-git-send-email-xuyang2018.jy@fujitsu.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: References: MIME-Version: 1.0 X-Originating-IP: [10.167.220.84] X-ClientProxiedBy: G08CNEXCHPEKD07.g08.fujitsu.local (10.167.33.80) To R01UKEXCASM126.r01.fujitsu.local (10.183.43.178) X-Virus-Scanned: clamav-milter 0.102.4 at in-4.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-4.smtp.seeweb.it Subject: [LTP] [PATCH v4 1/6] syscalls/quotactl08: Test quoatctl01 but quota info hidden in filesystem X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" It uses two variants(quotactl and quotactl_fd). The difference for quotactl01 is that we don't use quotacheck command and quota info hidden in filesystem. It also needs mkfs.ext4 supports quota feature. This feature is disabled[1] before e2fsprog 1.42 when not specifying a --enable-quota option in compile-time and e2fsprog 1.43 remove this disable[2]. So we should limit the e2fsprog to 1.43. [1]https://ext4.wiki.kernel.org/index.php/Quota [2]https://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git/commit/?h=v1.43&id=9e8fcd6e Signed-off-by: Yang Xu Reviewed-by: Cyril Hrubis --- runtest/syscalls | 1 + testcases/kernel/syscalls/quotactl/.gitignore | 1 + .../kernel/syscalls/quotactl/quotactl08.c | 228 ++++++++++++++++++ .../syscalls/quotactl/quotactl_syscall_var.h | 32 +++ 4 files changed, 262 insertions(+) create mode 100644 testcases/kernel/syscalls/quotactl/quotactl08.c create mode 100644 testcases/kernel/syscalls/quotactl/quotactl_syscall_var.h diff --git a/runtest/syscalls b/runtest/syscalls index bcf3d56c9..c795b9101 100644 --- a/runtest/syscalls +++ b/runtest/syscalls @@ -1071,6 +1071,7 @@ quotactl04 quotactl04 quotactl05 quotactl05 quotactl06 quotactl06 quotactl07 quotactl07 +quotactl08 quotactl08 read01 read01 read02 read02 diff --git a/testcases/kernel/syscalls/quotactl/.gitignore b/testcases/kernel/syscalls/quotactl/.gitignore index 8d2ef94d9..dab9b3420 100644 --- a/testcases/kernel/syscalls/quotactl/.gitignore +++ b/testcases/kernel/syscalls/quotactl/.gitignore @@ -5,3 +5,4 @@ /quotactl05 /quotactl06 /quotactl07 +/quotactl08 diff --git a/testcases/kernel/syscalls/quotactl/quotactl08.c b/testcases/kernel/syscalls/quotactl/quotactl08.c new file mode 100644 index 000000000..1b8f1cd2b --- /dev/null +++ b/testcases/kernel/syscalls/quotactl/quotactl08.c @@ -0,0 +1,228 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) 2021 FUJITSU LIMITED. All rights reserved + * Author: Yang Xu + */ + +/*\ + * [Description] + * This testcases checks that quotactl(2) on ext4 filesystem succeeds to: + * + * - turn on quota with Q_QUOTAON flag for user + * - set disk quota limits with Q_SETQUOTA flag for user + * - get disk quota limits with Q_GETQUOTA flag for user + * - set information about quotafile with Q_SETINFO flag for user + * - get information about quotafile with Q_GETINFO flag for user + * - get quota format with Q_GETFMT flag for user + * - update quota usages with Q_SYNC flag for user + * - get disk quota limit greater than or equal to ID with Q_GETNEXTQUOTA flag for user + * - turn off quota with Q_QUOTAOFF flag for user + * - turn on quota with Q_QUOTAON flag for group + * - set disk quota limits with Q_SETQUOTA flag for group + * - get disk quota limits with Q_GETQUOTA flag for group + * - set information about quotafile with Q_SETINFO flag for group + * - get information about quotafile with Q_GETINFO flag for group + * - get quota format with Q_GETFMT flag for group + * - update quota usages with Q_SYNC flag for group + * - get disk quota limit greater than or equal to ID with Q_GETNEXTQUOTA flag for group + * - turn off quota with Q_QUOTAOFF flag for group + * + * It is similar to quotactl01.c, only two difference + * - use new quotactl_fd syscalls if supports + * - quota file hidden in filesystem + * + * Minimum e2fsprogs version required is 1.43. + */ + +#include +#include +#include +#include "tst_test.h" +#include "quotactl_syscall_var.h" + +#define MNTPOINT "mntpoint" + +static int32_t fmt_id = QFMT_VFS_V1; +static int test_id, mount_flag; +static struct dqblk set_dq = { + .dqb_bsoftlimit = 100, + .dqb_valid = QIF_BLIMITS +}; +static struct dqblk res_dq; + +static struct dqinfo set_qf = { + .dqi_bgrace = 80, + .dqi_valid = IIF_BGRACE +}; +static struct dqinfo res_qf; +static int32_t fmt_buf; +static int getnextquota_nsup; + +static struct if_nextdqblk res_ndq; + +static struct tcase { + int cmd; + int *id; + void *addr; + void *set_data; + void *res_data; + int sz; + char *des; + char *tname; +} tcases[] = { + {QCMD(Q_QUOTAON, USRQUOTA), &fmt_id, NULL, + NULL, NULL, 0, "turn on quota for user", + "QCMD(Q_QUOTAON, USRQUOTA)"}, + + {QCMD(Q_SETQUOTA, USRQUOTA), &test_id, &set_dq, + NULL, NULL, 0, "set disk quota limit for user", + "QCMD(Q_SETQUOTA, USRQUOTA)"}, + + {QCMD(Q_GETQUOTA, USRQUOTA), &test_id, &res_dq, + &set_dq.dqb_bsoftlimit, &res_dq.dqb_bsoftlimit, + sizeof(res_dq.dqb_bsoftlimit), "get disk quota limit for user", + "QCMD(Q_GETQUOTA, USRQUOTA)"}, + + {QCMD(Q_SETINFO, USRQUOTA), &test_id, &set_qf, + NULL, NULL, 0, "set information about quotafile for user", + "QCMD(Q_SETINFO, USRQUOTA)"}, + + {QCMD(Q_GETINFO, USRQUOTA), &test_id, &res_qf, + &set_qf.dqi_bgrace, &res_qf.dqi_bgrace, sizeof(res_qf.dqi_bgrace), + "get information about quotafile for user", + "QCMD(Q_GETINFO, USRQUOTA)"}, + + {QCMD(Q_GETFMT, USRQUOTA), &test_id, &fmt_buf, + &fmt_id, &fmt_buf, sizeof(fmt_buf), + "get quota format for user", + "QCMD(Q_GETFMT, USRQUOTA)"}, + + {QCMD(Q_SYNC, USRQUOTA), &test_id, &res_dq, + NULL, NULL, 0, "update quota usages for user", + "QCMD(Q_SYNC, USRQUOTA)"}, + + {QCMD(Q_GETNEXTQUOTA, USRQUOTA), &test_id, &res_ndq, + &test_id, &res_ndq.dqb_id, sizeof(res_ndq.dqb_id), + "get next disk quota limit for user", + "QCMD(Q_GETNEXTQUOTA, USRQUOTA)"}, + + {QCMD(Q_QUOTAOFF, USRQUOTA), &test_id, NULL, + NULL, NULL, 0, "turn off quota for user", + "QCMD(Q_QUOTAOFF, USRQUOTA)"}, + + {QCMD(Q_QUOTAON, GRPQUOTA), &fmt_id, NULL, + NULL, NULL, 0, "turn on quota for group", + "QCMD(Q_QUOTAON, GRPQUOTA)"}, + + {QCMD(Q_SETQUOTA, GRPQUOTA), &test_id, &set_dq, + NULL, NULL, 0, "set disk quota limit for group", + "QCMD(Q_SETQUOTA, GRPQUOTA)"}, + + {QCMD(Q_GETQUOTA, GRPQUOTA), &test_id, &res_dq, &set_dq.dqb_bsoftlimit, + &res_dq.dqb_bsoftlimit, sizeof(res_dq.dqb_bsoftlimit), + "set disk quota limit for group", + "QCMD(Q_GETQUOTA, GRPQUOTA)"}, + + {QCMD(Q_SETINFO, GRPQUOTA), &test_id, &set_qf, + NULL, NULL, 0, "set information about quotafile for group", + "QCMD(Q_SETINFO, GRPQUOTA)"}, + + {QCMD(Q_GETINFO, GRPQUOTA), &test_id, &res_qf, &set_qf.dqi_bgrace, + &res_qf.dqi_bgrace, sizeof(res_qf.dqi_bgrace), + "get information about quotafile for group", + "QCMD(Q_GETINFO, GRPQUOTA)"}, + + {QCMD(Q_GETFMT, GRPQUOTA), &test_id, &fmt_buf, + &fmt_id, &fmt_buf, sizeof(fmt_buf), "get quota format for group", + "QCMD(Q_GETFMT, GRPQUOTA)"}, + + {QCMD(Q_SYNC, GRPQUOTA), &test_id, &res_dq, + NULL, NULL, 0, "update quota usages for group", + "QCMD(Q_SYNC, GRPQUOTA)"}, + + {QCMD(Q_GETNEXTQUOTA, GRPQUOTA), &test_id, &res_ndq, + &test_id, &res_ndq.dqb_id, sizeof(res_ndq.dqb_id), + "get next disk quota limit for group", + "QCMD(Q_GETNEXTQUOTA, GRPQUOTA)"}, + + {QCMD(Q_QUOTAOFF, GRPQUOTA), &test_id, NULL, + NULL, NULL, 0, "turn off quota for group", + "QCMD(Q_QUOTAOFF, GRPQUOTA)"}, +}; + +static void setup(void) +{ + const char *const fs_opts[] = { "-O quota", NULL}; + + quotactl_info(); + + SAFE_MKFS(tst_device->dev, tst_device->fs_type, fs_opts, NULL); + SAFE_MOUNT(tst_device->dev, MNTPOINT, tst_device->fs_type, 0, NULL); + mount_flag = 1; + + fd = SAFE_OPEN(MNTPOINT, O_RDONLY); + TEST(do_quotactl(fd, QCMD(Q_GETNEXTQUOTA, USRQUOTA), tst_device->dev, + 0, (void *) &res_ndq)); + if (TST_ERR == EINVAL || TST_ERR == ENOSYS) + getnextquota_nsup = 1; +} + +static void cleanup(void) +{ + if (fd > -1) + SAFE_CLOSE(fd); + if (mount_flag && tst_umount(MNTPOINT)) + tst_res(TWARN | TERRNO, "umount(%s)", MNTPOINT); +} + +static void verify_quota(unsigned int n) +{ + struct tcase *tc = &tcases[n]; + + res_dq.dqb_bsoftlimit = 0; + res_qf.dqi_igrace = 0; + fmt_buf = 0; + res_ndq.dqb_id = -1; + + tst_res(TINFO, "Test #%d: %s", n, tc->tname); + if ((tc->cmd == QCMD(Q_GETNEXTQUOTA, USRQUOTA) || + tc->cmd == QCMD(Q_GETNEXTQUOTA, GRPQUOTA)) && + getnextquota_nsup) { + tst_res(TCONF, "current system doesn't support this cmd"); + return; + } + TEST(do_quotactl(fd, tc->cmd, tst_device->dev, *tc->id, tc->addr)); + if (TST_RET == -1) { + tst_res(TFAIL | TTERRNO, "quotactl failed to %s", tc->des); + return; + } + + if (memcmp(tc->res_data, tc->set_data, tc->sz)) { + tst_res(TFAIL, "quotactl failed to %s", tc->des); + tst_res_hexd(TINFO, tc->res_data, tc->sz, "retval: "); + tst_res_hexd(TINFO, tc->set_data, tc->sz, "expected: "); + return; + } + + tst_res(TPASS, "quotactl succeeded to %s", tc->des); +} + +static struct tst_test test = { + .needs_root = 1, + .needs_kconfigs = (const char *[]) { + "CONFIG_QFMT_V2", + NULL + }, + .test = verify_quota, + .tcnt = ARRAY_SIZE(tcases), + .mntpoint = MNTPOINT, + .dev_fs_type = "ext4", + .needs_device = 1, + .setup = setup, + .cleanup = cleanup, + .test_variants = QUOTACTL_SYSCALL_VARIANTS, + .needs_cmds = (const char *[]) { + "mkfs.ext4 >= 1.43.0", + NULL + } +}; diff --git a/testcases/kernel/syscalls/quotactl/quotactl_syscall_var.h b/testcases/kernel/syscalls/quotactl/quotactl_syscall_var.h new file mode 100644 index 000000000..3d1a2c8f5 --- /dev/null +++ b/testcases/kernel/syscalls/quotactl/quotactl_syscall_var.h @@ -0,0 +1,32 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) 2021 FUJITSU LIMITED. All rights reserved. + * Author: Yang Xu + */ + +#ifndef LTP_QUOTACTL_SYSCALL_VAR_H +#define LTP_QUOTACTL_SYSCALL_VAR_H + +#include "lapi/quotactl.h" + +#define QUOTACTL_SYSCALL_VARIANTS 2 +#define MNTPOINT "mntpoint" + +static int fd = -1; + +static int do_quotactl(int fd, int cmd, const char *special, int id, caddr_t addr) +{ + if (tst_variant == 0) + return quotactl(cmd, special, id, addr); + return quotactl_fd(fd, cmd, id, addr); +} + +static void quotactl_info(void) +{ + if (tst_variant == 0) + tst_res(TINFO, "Test quotactl()"); + else + tst_res(TINFO, "Test quotactl_fd()"); +} + +#endif /* LTP_QUOTACTL_SYSCALL_VAR_H */ From patchwork Mon Dec 13 07:26:50 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yang Xu \\(Fujitsu\\)" X-Patchwork-Id: 1567165 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=fujitsu.com header.i=@fujitsu.com header.a=rsa-sha256 header.s=170520fj header.b=XyEBTzD2; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JCCkC4Cs8z9s1l for ; Mon, 13 Dec 2021 18:26:42 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id F0A823C8863 for ; Mon, 13 Dec 2021 08:26:38 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-4.smtp.seeweb.it (in-4.smtp.seeweb.it [IPv6:2001:4b78:1:20::4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 611193C2242 for ; Mon, 13 Dec 2021 08:26:36 +0100 (CET) Received: from mail1.bemta36.messagelabs.com (mail1.bemta36.messagelabs.com [85.158.142.112]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-4.smtp.seeweb.it (Postfix) with ESMTPS id 437A01000D0B for ; Mon, 13 Dec 2021 08:26:34 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.com; s=170520fj; t=1639380394; i=@fujitsu.com; bh=nrkO/izFIfKtTaNwDLYLEojUpaQ1f7umLu7TMgN8rhQ=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=XyEBTzD2W6RcJCewmGKwVdkQJBktqSy1p4OXof8w4uOte8WG+k4t8AHiayPAj4qRI NScTYwi+rlIjhFXowvDpeG/WM9r6vsQO+JMkWmpZQtMZuD25jW2DK/U178OqD7NMxk MugLMAR14fjuhtLzUjF5uso9VxtnbxaCkYmntaxmTiTjnryMwpl1+ZRsE6A0tRNFCi i0c3kBYaP8T5DBzhzO2b/k+HPoGlvETeTJeOwwrK+178akEiG2GqjpcCY1M3INzPxW NL6CdODbw+aB4lBegTzTvXZXkTX4slSOwc6GxoANFXYY8ehYvjN4FHLffQ+O1J0R+i cm1C22smr64UQ== Received: from [100.115.71.165] (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256 bits)) by server-3.bemta.az-a.eu-central-1.aws.ess.symcld.net id 57/AC-06990-AA5F6B16; Mon, 13 Dec 2021 07:26:34 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrAIsWRWlGSWpSXmKPExsViZ8MxSXfl122 JBicOm1qs+L6D0YHRY9/vdawBjFGsmXlJ+RUJrBltiyYzFdwxq2haPYG5gXGaXhcjJ4eQwFlG iWM3o7sYuYDsnUwSf/7+YYZw9jBKrOjrYgGpYhPQlHjWuYAZxBYRkJDoaHjLDmIzC6hLLJ/0i wnEFhbwkfjS/R2shkVAVeLI7NWsIDavgKfEyY0zwGokBBQkpjx8D1bDKeAl8e7CfUaIK5IkJr TOZoKoF5Q4OfMJC8R8CYmDL14wQ/QqSlzq+MYIYVdIzJrVBjVTTeLquU3MExgFZyFpn4WkfQE j0ypGu6SizPSMktzEzBxdQwMDXUNDU11zQ11DY2O9xCrdRL3UUt3k1LySokSgtF5iebFeanGx XnFlbnJOil5easkmRmAwpxS7t+5gvNz3U+8QoyQHk5Io7zfGrYlCfEn5KZUZicUZ8UWlOanFh xhlODiUJHi9vmxLFBIsSk1PrUjLzAFGFkxagoNHSYTXFSTNW1yQmFucmQ6ROsVozHH5+rxFzB x/NixZxCzEkpeflyolzpsFUioAUppRmgc3CBbxlxhlpYR5GRkYGIR4ClKLcjNLUOVfMYpzMCo J8waATOHJzCuB2/cK6BQmoFMYKzeDnFKSiJCSamA6wyrocnfKPzMr5e2r5Q99FXb6s/uT5Zss 7S1n3r49Mas2jXf3luryR433Tvfw2a/easX5yXv79po5E10FlLVvVejfdS021Ht/aspEDo+Pj Xym8g37r8QEvY5eosFtcjHEP8Gz6Z7jnN8zk177qyXkKjx4cU8wrrhF+1rf5Fyjkqh1CxiqVe wjPT9cztowLfRcZW6WWGH1hYA3fxvm7N/BohoWvFQ8QXlSsM6iD4v6HZINT8s0CYdL+jprplV 9EFlTdWJzCvuB4CPh0dVaNqkS14slc0tUJl/5GnJ5U0LTI8taU7WkIgYH0VelSR8Db7/cPU0x cXcUr/jV1f0pDavF1lq4pdx4ZXsxOHuukBJLcUaioRZzUXEiAJxwpw5zAwAA X-Env-Sender: xuyang2018.jy@fujitsu.com X-Msg-Ref: server-19.tower-545.messagelabs.com!1639380393!179926!1 X-Originating-IP: [62.60.8.146] X-SYMC-ESS-Client-Auth: outbound-route-from=pass X-StarScan-Received: X-StarScan-Version: 9.81.7; banners=-,-,- X-VirusChecked: Checked Received: (qmail 28842 invoked from network); 13 Dec 2021 07:26:33 -0000 Received: from unknown (HELO n03ukasimr02.n03.fujitsu.local) (62.60.8.146) by server-19.tower-545.messagelabs.com with ECDHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 13 Dec 2021 07:26:33 -0000 Received: from n03ukasimr02.n03.fujitsu.local (localhost [127.0.0.1]) by n03ukasimr02.n03.fujitsu.local (Postfix) with ESMTP id 607F4100353 for ; Mon, 13 Dec 2021 07:26:33 +0000 (GMT) Received: from R01UKEXCASM126.r01.fujitsu.local (unknown [10.183.43.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by n03ukasimr02.n03.fujitsu.local (Postfix) with ESMTPS id 533171000FC for ; Mon, 13 Dec 2021 07:26:33 +0000 (GMT) Received: from localhost.localdomain (10.167.220.84) by R01UKEXCASM126.r01.fujitsu.local (10.183.43.178) with Microsoft SMTP Server (TLS) id 15.0.1497.26; Mon, 13 Dec 2021 07:26:25 +0000 From: Yang Xu To: Date: Mon, 13 Dec 2021 15:26:50 +0800 Message-ID: <1639380414-24390-2-git-send-email-xuyang2018.jy@fujitsu.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1639380414-24390-1-git-send-email-xuyang2018.jy@fujitsu.com> References: <1639380414-24390-1-git-send-email-xuyang2018.jy@fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.220.84] X-ClientProxiedBy: G08CNEXCHPEKD07.g08.fujitsu.local (10.167.33.80) To R01UKEXCASM126.r01.fujitsu.local (10.183.43.178) X-Virus-Scanned: clamav-milter 0.102.4 at in-4.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-4.smtp.seeweb.it Subject: [LTP] [PATCH v4 2/6] syscalls/quotactl02, 5: Add quotactl_fd test variant X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Also remove useless geteuid and add static prefix. Signed-off-by: Yang Xu Reviewed-by: Cyril Hrubis --- .../kernel/syscalls/quotactl/quotactl02.c | 15 ++++++++-- .../kernel/syscalls/quotactl/quotactl02.h | 30 +++++++++---------- .../kernel/syscalls/quotactl/quotactl05.c | 15 ++++++++-- 3 files changed, 39 insertions(+), 21 deletions(-) diff --git a/testcases/kernel/syscalls/quotactl/quotactl02.c b/testcases/kernel/syscalls/quotactl/quotactl02.c index 55a6a8906..56fa23b9d 100644 --- a/testcases/kernel/syscalls/quotactl/quotactl02.c +++ b/testcases/kernel/syscalls/quotactl/quotactl02.c @@ -99,11 +99,18 @@ static struct t_case { static void setup(void) { - test_id = geteuid(); + quotactl_info(); + fd = SAFE_OPEN(MNTPOINT, O_RDONLY); check_support_cmd(USRQUOTA); check_support_cmd(GRPQUOTA); } +static void cleanup(void) +{ + if (fd > -1) + SAFE_CLOSE(fd); +} + static void verify_quota(unsigned int n) { struct t_case *tc = &tcases[n]; @@ -122,7 +129,7 @@ static void verify_quota(unsigned int n) return; } - TEST(quotactl(tc->cmd, tst_device->dev, test_id, tc->addr)); + TEST(do_quotactl(fd, tc->cmd, tst_device->dev, test_id, tc->addr)); if (TST_RET == -1) { tst_res(TFAIL | TTERRNO, "quotactl() failed to %s", tc->des); return; @@ -144,9 +151,11 @@ static struct tst_test test = { .tcnt = ARRAY_SIZE(tcases), .mount_device = 1, .dev_fs_type = "xfs", - .mntpoint = mntpoint, + .mntpoint = MNTPOINT, .mnt_data = "usrquota,grpquota", .setup = setup, + .cleanup = cleanup, + .test_variants = QUOTACTL_SYSCALL_VARIANTS, }; #else TST_TEST_TCONF("System doesn't have "); diff --git a/testcases/kernel/syscalls/quotactl/quotactl02.h b/testcases/kernel/syscalls/quotactl/quotactl02.h index 3351fb578..28b632646 100644 --- a/testcases/kernel/syscalls/quotactl/quotactl02.h +++ b/testcases/kernel/syscalls/quotactl/quotactl02.h @@ -12,7 +12,7 @@ #include #include #include "tst_test.h" -#include "lapi/quotactl.h" +#include "quotactl_syscall_var.h" #ifdef HAVE_XFS_XQM_H # include @@ -24,9 +24,8 @@ static struct fs_disk_quota set_dquota = { static uint32_t test_id; static int x_getnextquota_nsup; static int x_getstatv_nsup; -static const char mntpoint[] = "mnt_point"; -void check_support_cmd(int quotatype) +static void check_support_cmd(int quotatype) { struct fs_disk_quota resfs_dquota; struct fs_quota_statv resfs_qstatv = { @@ -36,23 +35,24 @@ void check_support_cmd(int quotatype) x_getnextquota_nsup = 0; x_getstatv_nsup = 0; - TEST(quotactl(QCMD(Q_XGETNEXTQUOTA, quotatype), tst_device->dev, + TEST(do_quotactl(fd, QCMD(Q_XGETNEXTQUOTA, quotatype), tst_device->dev, test_id, (void *) &resfs_dquota)); if (TST_ERR == EINVAL || TST_ERR == ENOSYS) x_getnextquota_nsup = 1; - TEST(quotactl(QCMD(Q_XGETQSTATV, quotatype), tst_device->dev, test_id, + TEST(do_quotactl(fd, QCMD(Q_XGETQSTATV, quotatype), tst_device->dev, test_id, (void *) &resfs_qstatv)); if (TST_ERR == EINVAL || TST_ERR == ENOSYS) x_getstatv_nsup = 1; } -void check_qoff(int subcmd, char *desp, int flag) + +static void check_qoff(int subcmd, char *desp, int flag) { int res; struct fs_quota_stat res_qstat; - res = quotactl(subcmd, tst_device->dev, test_id, (void *) &res_qstat); + res = do_quotactl(fd, subcmd, tst_device->dev, test_id, (void *) &res_qstat); if (res == -1) { tst_res(TFAIL | TERRNO, "quotactl() failed to get xfs quota off status"); @@ -67,12 +67,12 @@ void check_qoff(int subcmd, char *desp, int flag) tst_res(TPASS, "quotactl() succeeded to %s", desp); } -void check_qon(int subcmd, char *desp, int flag) +static void check_qon(int subcmd, char *desp, int flag) { int res; struct fs_quota_stat res_qstat; - res = quotactl(subcmd, tst_device->dev, test_id, (void *) &res_qstat); + res = do_quotactl(fd, subcmd, tst_device->dev, test_id, (void *) &res_qstat); if (res == -1) { tst_res(TFAIL | TERRNO, "quotactl() failed to get xfs quota on status"); @@ -87,14 +87,14 @@ void check_qon(int subcmd, char *desp, int flag) tst_res(TPASS, "quotactl() succeeded to %s", desp); } -void check_qoffv(int subcmd, char *desp, int flag) +static void check_qoffv(int subcmd, char *desp, int flag) { int res; struct fs_quota_statv res_qstatv = { .qs_version = FS_QSTATV_VERSION1, }; - res = quotactl(subcmd, tst_device->dev, test_id, (void *) &res_qstatv); + res = do_quotactl(fd, subcmd, tst_device->dev, test_id, (void *) &res_qstatv); if (res == -1) { tst_res(TFAIL | TERRNO, "quotactl() failed to get xfs quota off stav"); @@ -109,14 +109,14 @@ void check_qoffv(int subcmd, char *desp, int flag) tst_res(TPASS, "quotactl() succeeded to %s", desp); } -void check_qonv(int subcmd, char *desp, int flag) +static void check_qonv(int subcmd, char *desp, int flag) { int res; struct fs_quota_statv res_qstatv = { .qs_version = FS_QSTATV_VERSION1 }; - res = quotactl(subcmd, tst_device->dev, test_id, (void *) &res_qstatv); + res = do_quotactl(fd, subcmd, tst_device->dev, test_id, (void *) &res_qstatv); if (res == -1) { tst_res(TFAIL | TERRNO, "quotactl() failed to get xfs quota on statv"); @@ -131,14 +131,14 @@ void check_qonv(int subcmd, char *desp, int flag) tst_res(TPASS, "quotactl() succeeded to %s", desp); } -void check_qlim(int subcmd, char *desp) +static void check_qlim(int subcmd, char *desp) { int res; static struct fs_disk_quota res_dquota; res_dquota.d_rtb_softlimit = 0; - res = quotactl(subcmd, tst_device->dev, test_id, (void *) &res_dquota); + res = do_quotactl(fd, subcmd, tst_device->dev, test_id, (void *) &res_dquota); if (res == -1) { tst_res(TFAIL | TERRNO, "quotactl() failed to get xfs disk quota limits"); diff --git a/testcases/kernel/syscalls/quotactl/quotactl05.c b/testcases/kernel/syscalls/quotactl/quotactl05.c index 15a6c1e67..e56e191df 100644 --- a/testcases/kernel/syscalls/quotactl/quotactl05.c +++ b/testcases/kernel/syscalls/quotactl/quotactl05.c @@ -62,10 +62,17 @@ static struct t_case { static void setup(void) { - test_id = geteuid(); + quotactl_info(); + fd = SAFE_OPEN(MNTPOINT, O_RDONLY); check_support_cmd(PRJQUOTA); } +static void cleanup(void) +{ + if (fd > -1) + SAFE_CLOSE(fd); +} + static void verify_quota(unsigned int n) { struct t_case *tc = &tcases[n]; @@ -85,7 +92,7 @@ static void verify_quota(unsigned int n) return; } - TEST(quotactl(tc->cmd, tst_device->dev, test_id, tc->addr)); + TEST(do_quotactl(fd, tc->cmd, tst_device->dev, test_id, tc->addr)); if (TST_RET == -1) { tst_res(TFAIL | TTERRNO, "quotactl() failed to %s", tc->des); return; @@ -107,9 +114,11 @@ static struct tst_test test = { .tcnt = ARRAY_SIZE(tcases), .mount_device = 1, .dev_fs_type = "xfs", - .mntpoint = mntpoint, + .mntpoint = MNTPOINT, .mnt_data = "prjquota", .setup = setup, + .cleanup = cleanup, + .test_variants = QUOTACTL_SYSCALL_VARIANTS, }; #else From patchwork Mon Dec 13 07:26:51 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yang Xu \\(Fujitsu\\)" X-Patchwork-Id: 1567167 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=fujitsu.com header.i=@fujitsu.com header.a=rsa-sha256 header.s=170520fj header.b=fk+Bmmdz; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JCCkY6Zdvz9s1l for ; Mon, 13 Dec 2021 18:27:01 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 358343C8977 for ; Mon, 13 Dec 2021 08:26:59 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-4.smtp.seeweb.it (in-4.smtp.seeweb.it [IPv6:2001:4b78:1:20::4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 940663C8C37 for ; Mon, 13 Dec 2021 08:26:47 +0100 (CET) Received: from mail1.bemta34.messagelabs.com (mail1.bemta34.messagelabs.com [195.245.231.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-4.smtp.seeweb.it (Postfix) with ESMTPS id 8764E1000A12 for ; Mon, 13 Dec 2021 08:26:46 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.com; s=170520fj; t=1639380405; i=@fujitsu.com; bh=yaHU5Y+z6tuguFfJNAPUvA5YK4UBE2aOgVuTE58SOIY=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=fk+BmmdzJ3z+Pv85jSmW8of8oFB4g7FjXWGSvImKOYDJq37Ya7v9AwH2RpK37KjM9 DKKGO8fccJKZRhzFsHdPf/GTnnY3Cuy0BjjlWz7DtBxoWnYXi4RyZ7lt0VohPvjKDY LY1v07GCJIaF17IO+QU2XG2dJ5MYr/ENtNpw9uRuTSF2s3Kh9gk595p23mclR4x9O0 UJtmXg180IX9PZx0QemHXJ0wHq+lFquqeXlogTlUOzQVooHdhPNU3Hbsvn5i4HMBcs Qqx1Xe8Qzuw1PwMRgqb7kPdpBS41a08Gs361pue37ye7pXBCGWhfEGVkaepS+WqcaA s7+qsKFMrDvEA== Received: from [100.115.39.64] (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256 bits)) by server-2.bemta.az-a.eu-west-2.aws.ess.symcld.net id DE/37-16537-5B5F6B16; Mon, 13 Dec 2021 07:26:45 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrHIsWRWlGSWpSXmKPExsViZ8MRorv167Z Eg/XL2C1WfN/B6MDose/3OtYAxijWzLyk/IoE1oxDK6azFxzlr7i9p52xgXEObxcjF4eQQBOT xPO3h1khnD2MEu0T17B3MXJysAloSjzrXMAMYosISEh0NLwFizMLqEssn/SLqYuRg0NYwFPiy i9hkDCLgKrE3deXWUBsXqDwr1fdYOUSAgoSUx6+BxvDKeAl8e7CfUYQW0ggSWJC62wmiHpBiZ Mzn7BAjJeQOPjiBTNEr6LEpY5vjBB2hcSsWW1MExj5ZyFpmYWkZQEj0ypG66SizPSMktzEzBx dQwMDXUNDU11jU11DE0u9xCrdRL3UUt3y1OISXSO9xPJivdTiYr3iytzknBS9vNSSTYzAoEwp Vp66g/H0qp96hxglOZiURHm/MW5NFOJLyk+pzEgszogvKs1JLT7EKMPBoSTB6/VlW6KQYFFqe mpFWmYOMEJg0hIcPEoivK4gad7igsTc4sx0iNQpRl2Oy9fnLWIWYsnLz0uVEufNAikSACnKKM 2DGwGL1kuMslLCvIwMDAxCPAWpRbmZJajyrxjFORiVhHkDQKbwZOaVwG16BXQEE9ARjJWbQY4 oSURISTUwTax632uXcXFSzuHH17M+rjTbO3n5tPsrO6Xjb3xekcirFHKeoejGlthYC/+wHa6f TvQcCppZflrS5sYB675P8ee+6YSU/f73dpqH8K7D0X9SC3ZtfXQ7Ru4b2+3KzbGLbrxO+Z5pa qSjaro3bFoMR9hizmn26u/vmt3uFzN55po0QcVjZ/qD2Babm9mdc9XzT2+zquh9scvy7ZmOTU UdG7aG+T8+uM2ib2Xk+403Tk278GLztrblBXOnf1EqXfCg5JV5gNDeXzNStkunxIVX/RJV/yp j5jytlFO15/MSH0NTs2X1oh+ddF4oT/i9aGr16uImt4sSAQtDlHezt6841HQ50lMs9t3D6MNP 2bY+11diKc5INNRiLipOBACBT/+jUQMAAA== X-Env-Sender: xuyang2018.jy@fujitsu.com X-Msg-Ref: server-5.tower-571.messagelabs.com!1639380404!199462!1 X-Originating-IP: [62.60.8.84] X-SYMC-ESS-Client-Auth: outbound-route-from=pass X-StarScan-Received: X-StarScan-Version: 9.81.7; banners=-,-,- X-VirusChecked: Checked Received: (qmail 19640 invoked from network); 13 Dec 2021 07:26:45 -0000 Received: from unknown (HELO mailhost3.uk.fujitsu.com) (62.60.8.84) by server-5.tower-571.messagelabs.com with ECDHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 13 Dec 2021 07:26:45 -0000 Received: from R01UKEXCASM126.r01.fujitsu.local ([10.183.43.178]) by mailhost3.uk.fujitsu.com (8.14.5/8.14.5) with ESMTP id 1BD7QbIZ029294 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL) for ; Mon, 13 Dec 2021 07:26:44 GMT Received: from localhost.localdomain (10.167.220.84) by R01UKEXCASM126.r01.fujitsu.local (10.183.43.178) with Microsoft SMTP Server (TLS) id 15.0.1497.26; Mon, 13 Dec 2021 07:26:35 +0000 From: Yang Xu To: Date: Mon, 13 Dec 2021 15:26:51 +0800 Message-ID: <1639380414-24390-3-git-send-email-xuyang2018.jy@fujitsu.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1639380414-24390-1-git-send-email-xuyang2018.jy@fujitsu.com> References: <1639380414-24390-1-git-send-email-xuyang2018.jy@fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.220.84] X-ClientProxiedBy: G08CNEXCHPEKD07.g08.fujitsu.local (10.167.33.80) To R01UKEXCASM126.r01.fujitsu.local (10.183.43.178) X-Virus-Scanned: clamav-milter 0.102.4 at in-4.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-4.smtp.seeweb.it Subject: [LTP] [PATCH v4 3/6] syscalls/quotactl03: Add quotactl_fd test variant X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Also remove dupcliated header file. Signed-off-by: Yang Xu Reviewed-by: Cyril Hrubis --- .../kernel/syscalls/quotactl/quotactl03.c | 23 +++++++++++++++---- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/testcases/kernel/syscalls/quotactl/quotactl03.c b/testcases/kernel/syscalls/quotactl/quotactl03.c index e0e4bf5b2..22f5496b6 100644 --- a/testcases/kernel/syscalls/quotactl/quotactl03.c +++ b/testcases/kernel/syscalls/quotactl/quotactl03.c @@ -23,19 +23,17 @@ */ #define _GNU_SOURCE -#include "config.h" #include #include #include #include #include "tst_test.h" -#include "lapi/quotactl.h" +#include "quotactl_syscall_var.h" #ifdef HAVE_XFS_XQM_H # include -static const char mntpoint[] = "mnt_point"; static uint32_t test_id = 0xfffffffc; static void verify_quota(void) @@ -44,7 +42,7 @@ static void verify_quota(void) res_dquota.d_id = 1; - TEST(quotactl(QCMD(Q_XGETNEXTQUOTA, USRQUOTA), tst_device->dev, + TEST(do_quotactl(fd, QCMD(Q_XGETNEXTQUOTA, USRQUOTA), tst_device->dev, test_id, (void *)&res_dquota)); if (TST_RET != -1) { tst_res(TFAIL, "quotactl() found the next active ID: %u unexpectedly", @@ -63,7 +61,21 @@ static void verify_quota(void) tst_res(TPASS, "quotactl() failed with ENOENT as expected"); } +static void setup(void) +{ + quotactl_info(); + fd = SAFE_OPEN(MNTPOINT, O_RDONLY); +} + +static void cleanup(void) +{ + if (fd > -1) + SAFE_CLOSE(fd); +} + static struct tst_test test = { + .setup = setup, + .cleanup = cleanup, .needs_root = 1, .needs_kconfigs = (const char *[]) { "CONFIG_XFS_QUOTA", @@ -72,8 +84,9 @@ static struct tst_test test = { .test_all = verify_quota, .mount_device = 1, .dev_fs_type = "xfs", - .mntpoint = mntpoint, + .mntpoint = MNTPOINT, .mnt_data = "usrquota", + .test_variants = QUOTACTL_SYSCALL_VARIANTS, .tags = (const struct tst_tag[]) { {"linux-git", "657bdfb7f5e6"}, {} From patchwork Mon Dec 13 07:26:52 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yang Xu \\(Fujitsu\\)" X-Patchwork-Id: 1567168 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=fujitsu.com header.i=@fujitsu.com header.a=rsa-sha256 header.s=170520fj header.b=BqSlemiO; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JCCkr22p7z9s1l for ; Mon, 13 Dec 2021 18:27:16 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id E306C3C8979 for ; Mon, 13 Dec 2021 08:27:12 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-5.smtp.seeweb.it (in-5.smtp.seeweb.it [IPv6:2001:4b78:1:20::5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id 06E533C2242 for ; Mon, 13 Dec 2021 08:27:10 +0100 (CET) Received: from mail3.bemta32.messagelabs.com (mail3.bemta32.messagelabs.com [195.245.230.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-5.smtp.seeweb.it (Postfix) with ESMTPS id 6428A6005C4 for ; Mon, 13 Dec 2021 08:27:09 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.com; s=170520fj; t=1639380429; i=@fujitsu.com; bh=IKA1U55eRctZk7Z1OhAMGtuO8IyzcNE1yaLPaXYbduk=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=BqSlemiO/rNmiManRJ6Urg1gggIxECymGwAYliqnrvgtRlvBUUU72j685G21u3YeA oiHt6fVmo8TvgAQINnVC0pMRtRhFVwMoFrj/+wuTw2/srERqpRLe10KgjfXfB5evAy VKwrKAK2FMcvf732KB1bvkS37+XEFC31ia+9a6AL4n5Qa2S2hnP+j/+tBPxX3cdhSM tH+ZgxIf/kCWqShuqzo/cyvEnyq6WcX31xiwLe5qxuOZgVMdaVOsFSyRJXtSffIypF 095yK7Jt3Dq0va3pM/Oi1eQi5VcgoYuUp3zpCZ5XGbpEr/55KwZwV/WNgZD8Kc9QqR t06zudyfBlBJA== Received: from [100.115.0.27] (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256 bits)) by server-2.bemta.az-a.eu-west-1.aws.ess.symcld.net id 42/12-10124-DC5F6B16; Mon, 13 Dec 2021 07:27:09 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrNIsWRWlGSWpSXmKPExsViZ8ORqHv267Z Eg4M7mSxWfN/B6MDose/3OtYAxijWzLyk/IoE1ozGTT2MBYf5KtqWvWFqYNzJ08XIxSEkcJZR YsXMIywQzk4miWsbH7JCOHsYJT5cvsvWxcjJwSagKfGscwEziC0iICHR0fCWHcRmFlCXWD7pF xOILSzgKdH1awdYnEVAVaJ10TkWEJsXKP7x9E6wXgkBBYkpD9+D2ZwCXhLvLtxnBLGFBJIkJr TOZoKoF5Q4OfMJC8R8CYmDL15A9SpKXOr4xghhV0jMmtXGBGGrSVw9t4l5AqPgLCTts5C0L2B kWsVolVSUmZ5RkpuYmaNraGCga2hoqmuoa2RorpdYpZuol1qqW55aXKJrqJdYXqyXWlysV1yZ m5yTopeXWrKJERjGKcWMN3cwtvb91DvEKMnBpCTK+41xa6IQX1J+SmVGYnFGfFFpTmrxIUYZD g4lCV6vL9sShQSLUtNTK9Iyc4AxBZOW4OBREuF1BUnzFhck5hZnpkOkTjEqSonzZoEkBEASGa V5cG2wOL7EKCslzMvIwMAgxFOQWpSbWYIq/4pRnINRSZg3AGQKT2ZeCdz0V0CLmYAWM1ZuBll ckoiQkmpg8qoPe7r99OJ4Vd3C3l6WzuDdjRwLd7HYLVi6xutpcnyXT7vB8QfbUjOOXBHOjri1 3pxDff2z2px1sza+3uFv2SHMe5hDgn3Xe42If8eFTVdbbQg9NOfF0wDOFcfWPOQWZSj8ul//3 gTrSVftlzZMElv1/wc3zyerLE1tz7pLD3MTo8rnvN/oXHUi6Jus2/UDE9NXbvrxozDu7kbOgM tpYfVOq41S/lvGnL2RfjV1roLUz39xtx0qY4p1c8sXymgt9jzoUiUW27snnIUn9cHn22J+YWE 6yww//zNZX7OiRZhxJ8OqiLkr1tc1sU56uINlk8oqYdUfm8oObNRxUY1a4rqt1PWhUegDs+ir xaUqSizFGYmGWsxFxYkAAR2kx14DAAA= X-Env-Sender: xuyang2018.jy@fujitsu.com X-Msg-Ref: server-10.tower-585.messagelabs.com!1639380428!163207!1 X-Originating-IP: [62.60.8.97] X-SYMC-ESS-Client-Auth: outbound-route-from=pass X-StarScan-Received: X-StarScan-Version: 9.81.7; banners=-,-,- X-VirusChecked: Checked Received: (qmail 28077 invoked from network); 13 Dec 2021 07:27:09 -0000 Received: from unknown (HELO n03ukasimr01.n03.fujitsu.local) (62.60.8.97) by server-10.tower-585.messagelabs.com with ECDHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 13 Dec 2021 07:27:09 -0000 Received: from n03ukasimr01.n03.fujitsu.local (localhost [127.0.0.1]) by n03ukasimr01.n03.fujitsu.local (Postfix) with ESMTP id 89D58100248 for ; Mon, 13 Dec 2021 07:27:08 +0000 (GMT) Received: from R01UKEXCASM126.r01.fujitsu.local (unknown [10.183.43.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by n03ukasimr01.n03.fujitsu.local (Postfix) with ESMTPS id 7ECDE10023B for ; Mon, 13 Dec 2021 07:27:08 +0000 (GMT) Received: from localhost.localdomain (10.167.220.84) by R01UKEXCASM126.r01.fujitsu.local (10.183.43.178) with Microsoft SMTP Server (TLS) id 15.0.1497.26; Mon, 13 Dec 2021 07:26:48 +0000 From: Yang Xu To: Date: Mon, 13 Dec 2021 15:26:52 +0800 Message-ID: <1639380414-24390-4-git-send-email-xuyang2018.jy@fujitsu.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1639380414-24390-1-git-send-email-xuyang2018.jy@fujitsu.com> References: <1639380414-24390-1-git-send-email-xuyang2018.jy@fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.220.84] X-ClientProxiedBy: G08CNEXCHPEKD07.g08.fujitsu.local (10.167.33.80) To R01UKEXCASM126.r01.fujitsu.local (10.183.43.178) X-Virus-Scanned: clamav-milter 0.102.4 at in-5.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-5.smtp.seeweb.it Subject: [LTP] [PATCH v4 4/6] syscalls/quotactl04: Add quotactl_fd test variant X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Also remove useless geteuid. Signed-off-by: Yang Xu Reviewed-by: Cyril Hrubis --- testcases/kernel/syscalls/quotactl/quotactl04.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/testcases/kernel/syscalls/quotactl/quotactl04.c b/testcases/kernel/syscalls/quotactl/quotactl04.c index cc107a7e4..44273c35d 100644 --- a/testcases/kernel/syscalls/quotactl/quotactl04.c +++ b/testcases/kernel/syscalls/quotactl/quotactl04.c @@ -27,10 +27,10 @@ #include #include #include "tst_test.h" -#include "lapi/quotactl.h" +#include "quotactl_syscall_var.h" #define FMTID QFMT_VFS_V1 -#define MNTPOINT "mntpoint" + static int32_t fmt_id = FMTID; static int test_id, mount_flag; static struct dqblk set_dq = { @@ -121,13 +121,16 @@ static void setup(void) { const char *const fs_opts[] = {"-I 256", "-O quota,project", NULL}; - test_id = geteuid(); + quotactl_info(); SAFE_MKFS(tst_device->dev, tst_device->fs_type, fs_opts, NULL); do_mount(tst_device->dev, MNTPOINT, tst_device->fs_type, 0, NULL); + 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); } @@ -142,7 +145,7 @@ static void verify_quota(unsigned int n) tst_res(TINFO, "Test #%d: %s", n, tc->tname); - TEST(quotactl(tc->cmd, tst_device->dev, *tc->id, tc->addr)); + TEST(do_quotactl(fd, tc->cmd, tst_device->dev, *tc->id, tc->addr)); if (TST_RET == -1) { tst_res(TFAIL | TTERRNO, "quotactl failed to %s", tc->des); return; @@ -172,6 +175,7 @@ static struct tst_test test = { .needs_device = 1, .dev_fs_type = "ext4", .mntpoint = MNTPOINT, + .test_variants = QUOTACTL_SYSCALL_VARIANTS, .needs_cmds = (const char *[]) { "mkfs.ext4 >= 1.43.0", NULL From patchwork Mon Dec 13 07:26:53 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yang Xu \\(Fujitsu\\)" X-Patchwork-Id: 1567169 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=fujitsu.com header.i=@fujitsu.com header.a=rsa-sha256 header.s=170520fj header.b=H3up8Fjd; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=2001:1418:10:5::2; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Received: from picard.linux.it (picard.linux.it [IPv6:2001:1418:10:5::2]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JCCl23jXPz9s1l for ; Mon, 13 Dec 2021 18:27:26 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id EAB723C8852 for ; Mon, 13 Dec 2021 08:27:23 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-4.smtp.seeweb.it (in-4.smtp.seeweb.it [217.194.8.4]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id E9BFA3C8867 for ; Mon, 13 Dec 2021 08:27:18 +0100 (CET) Received: from mail1.bemta34.messagelabs.com (mail1.bemta34.messagelabs.com [195.245.231.2]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-4.smtp.seeweb.it (Postfix) with ESMTPS id 3D3B510005DD for ; Mon, 13 Dec 2021 08:27:17 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.com; s=170520fj; t=1639380437; i=@fujitsu.com; bh=sAxpeD1RqY4xs1+z2UaqtzvVP5sBwkTTNcCXhoH5+OI=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=H3up8Fjd+97MXzVXwSHro7Z8/b1POnd8QjFzGnxcorIiO2KyQJHjF9aI/rnTU7NEo N3U/aOwq7H90aYfaQmXqO1lf1Cu4KvBZNbb5kSZ9ywu3g0ugw3GFmkH3ruijhlhQd8 /4wucGYAjUHy4WHPHAOQ6iGfY/yQN+ZgbC8Z8CwCg2dD5qTt9cXg61QoXqFuxh+4J/ ngdQy83O6tZq8bCJNFO6qo2Ns3iI85sxbSZwEGN6QsNzEarV3mTP31jQ/3JPLQmYeB 6SdA5N9QjR1zlu0u4Sh09rlXNlukeIzrR0eMJBqfv4xpgj7p7fT7raFoXu8rW0j2Rh GtNlLZPNcPl5w== Received: from [100.115.39.64] (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256 bits)) by server-2.bemta.az-a.eu-west-2.aws.ess.symcld.net id 82/D8-16537-5D5F6B16; Mon, 13 Dec 2021 07:27:17 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFtrPIsWRWlGSWpSXmKPExsViZ8MxRffK122 JBpvOWFus+L6D0YHRY9/vdawBjFGsmXlJ+RUJrBm3urcyFezWq2jdupa9gbFFvYuRi0NIoIlJ YuOGm6wQzh5GiVONF4AcTg42AU2JZ50LmEFsEQEJiY6Gt+wgNrOAusTySb+YQGxhgRiJC6t/g tWwCKhKHHzyC8zmFfCU2PdwApgtIaAgMeXhezCbU8BL4t2F+4wgtpBAksSE1tlMEPWCEidnPm GBmC8hcfDFC6heRYlLHd8YIewKiVmz2pgmMPLPQtIyC0nLAkamVYzWSUWZ6RkluYmZObqGBga 6hoamusYWQMpQL7FKN1EvtVS3PLW4RNdIL7G8WC+1uFivuDI3OSdFLy+1ZBMjMCxTitXydzD+ XflT7xCjJAeTkijvN8atiUJ8SfkplRmJxRnxRaU5qcWHGGU4OJQkeL2+bEsUEixKTU+tSMvMA cYITFqCg0dJhHc1ME6EeIsLEnOLM9MhUqcYdTmaJy3fzizEkpeflyolzvsXZIYASFFGaR7cCF i8XmKUlRLmZWRgYBDiKUgtys0sQZV/xSjOwagkzBsAMoUnM68EbtMroCOYgI5grNwMckRJIkJ KqoFpuXXvifPBAfP9zc41r3wx+/6X6Rcn1VufYZfP+Hw/IJTpXbXIBsWHos+nMAg/0C98uJ2p 7inLfJ37Gb5Cn/YdFr36dmnkpJcFcY4d6quY1RatNWRcabLVa+09hVfBa/x4p1c/sH6vlnQn7 XR2d4PQxV+8rPealrgwP2WzWbVOXNT57379WlbvD9MzLsVO65xl3hGhKnj10S52rUcfuH7vca 4JYjk5S+mPwTS/2yWvM1TtbarmpJ/Pu9/Lu/bKqr0Nez6miOR/O7fea8OuLf5r2jffe7tzfaD qNP2Y66+mrr6s03mndN2c6gss7n5nVe78Xsja/MbLwSdnr/GvS+6tBTY8BzRO/FxvMXXyBN/N P5RYijMSDbWYi4oTAa//xvxSAwAA X-Env-Sender: xuyang2018.jy@fujitsu.com X-Msg-Ref: server-13.tower-548.messagelabs.com!1639380436!198468!1 X-Originating-IP: [62.60.8.148] X-SYMC-ESS-Client-Auth: outbound-route-from=pass X-StarScan-Received: X-StarScan-Version: 9.81.7; banners=-,-,- X-VirusChecked: Checked Received: (qmail 7078 invoked from network); 13 Dec 2021 07:27:16 -0000 Received: from unknown (HELO mailhost1.uk.fujitsu.com) (62.60.8.148) by server-13.tower-548.messagelabs.com with ECDHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 13 Dec 2021 07:27:16 -0000 Received: from R01UKEXCASM126.r01.fujitsu.local ([10.183.43.178]) by mailhost1.uk.fujitsu.com (8.14.5/8.14.5) with ESMTP id 1BD7RGRm002382 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=FAIL) for ; Mon, 13 Dec 2021 07:27:16 GMT Received: from localhost.localdomain (10.167.220.84) by R01UKEXCASM126.r01.fujitsu.local (10.183.43.178) with Microsoft SMTP Server (TLS) id 15.0.1497.26; Mon, 13 Dec 2021 07:27:14 +0000 From: Yang Xu To: Date: Mon, 13 Dec 2021 15:26:53 +0800 Message-ID: <1639380414-24390-5-git-send-email-xuyang2018.jy@fujitsu.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1639380414-24390-1-git-send-email-xuyang2018.jy@fujitsu.com> References: <1639380414-24390-1-git-send-email-xuyang2018.jy@fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.220.84] X-ClientProxiedBy: G08CNEXCHPEKD07.g08.fujitsu.local (10.167.33.80) To R01UKEXCASM126.r01.fujitsu.local (10.183.43.178) X-Virus-Scanned: clamav-milter 0.102.4 at in-4.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-4.smtp.seeweb.it Subject: [LTP] [PATCH v4 5/6] syscalls/quotactl09: Test error when quota info hidden in filesystem X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" This case is similar to quotactl06 but only two differences 1) use quotactl and quotactl_fd syscalls without visible quota file 2) remove some error for addr argument Signed-off-by: Yang Xu --- runtest/syscalls | 1 + testcases/kernel/syscalls/quotactl/.gitignore | 1 + .../kernel/syscalls/quotactl/quotactl09.c | 180 ++++++++++++++++++ 3 files changed, 182 insertions(+) create mode 100644 testcases/kernel/syscalls/quotactl/quotactl09.c diff --git a/runtest/syscalls b/runtest/syscalls index c795b9101..13a62e4a1 100644 --- a/runtest/syscalls +++ b/runtest/syscalls @@ -1072,6 +1072,7 @@ quotactl05 quotactl05 quotactl06 quotactl06 quotactl07 quotactl07 quotactl08 quotactl08 +quotactl09 quotactl09 read01 read01 read02 read02 diff --git a/testcases/kernel/syscalls/quotactl/.gitignore b/testcases/kernel/syscalls/quotactl/.gitignore index dab9b3420..94de2c8f2 100644 --- a/testcases/kernel/syscalls/quotactl/.gitignore +++ b/testcases/kernel/syscalls/quotactl/.gitignore @@ -6,3 +6,4 @@ /quotactl06 /quotactl07 /quotactl08 +/quotactl09 diff --git a/testcases/kernel/syscalls/quotactl/quotactl09.c b/testcases/kernel/syscalls/quotactl/quotactl09.c new file mode 100644 index 000000000..c7c485077 --- /dev/null +++ b/testcases/kernel/syscalls/quotactl/quotactl09.c @@ -0,0 +1,180 @@ +// SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (c) 2021 FUJITSU LIMITED. All rights reserved. + * Author: Yang Xu + */ + +/*\ + * [Description] + * + * Tests basic error handling of the quotactl syscall without visible quota files + * (use quotactl and quotactl_fd syscall): + * + * - EFAULT when addr or special is invalid + * - EINVAL when cmd or type is invalid + * - ENOTBLK when special is not a block device + * - ERANGE when cmd is Q_SETQUOTA, but the specified limits are out of the range + * allowed by the quota format + * - EPERM when the caller lacked the required privilege (CAP_SYS_ADMIN) for the + * specified operation + * + * Minimum e2fsprogs version required is 1.43. + */ + +#include +#include +#include "tst_test.h" +#include "tst_capability.h" +#include "quotactl_syscall_var.h" + +#define OPTION_INVALID 999 + +static int32_t fmt_id = QFMT_VFS_V1; +static int test_id, mount_flag; +static int getnextquota_nsup; + +static struct if_nextdqblk res_ndq; + +static struct dqblk set_dqmax = { + .dqb_bsoftlimit = 0x7fffffffffffffffLL, /* 2^63-1 */ + .dqb_valid = QIF_BLIMITS +}; + +static struct tst_cap dropadmin = { + .action = TST_CAP_DROP, + .id = CAP_SYS_ADMIN, + .name = "CAP_SYS_ADMIN", +}; + +static struct tst_cap needadmin = { + .action = TST_CAP_REQ, + .id = CAP_SYS_ADMIN, + .name = "CAP_SYS_ADMIN", +}; + +static struct tcase { + int cmd; + int *id; + void *addr; + int exp_err; + int on_flag; +} tcases[] = { + {QCMD(Q_SETQUOTA, USRQUOTA), &fmt_id, NULL, EFAULT, 1}, + {QCMD(OPTION_INVALID, USRQUOTA), &fmt_id, NULL, EINVAL, 0}, + {QCMD(Q_QUOTAON, USRQUOTA), &fmt_id, NULL, ENOTBLK, 0}, + {QCMD(Q_SETQUOTA, USRQUOTA), &test_id, &set_dqmax, ERANGE, 1}, + {QCMD(Q_QUOTAON, USRQUOTA), &fmt_id, NULL, EPERM, 0}, +}; + +static void verify_quotactl(unsigned int n) +{ + struct tcase *tc = &tcases[n]; + int quota_on = 0; + int drop_flag = 0; + + if (tc->cmd == QCMD(Q_GETNEXTQUOTA, USRQUOTA) && getnextquota_nsup) { + tst_res(TCONF, "current system doesn't support Q_GETNEXTQUOTA"); + return; + } + + if (tc->on_flag) { + TEST(do_quotactl(fd, QCMD(Q_QUOTAON, USRQUOTA), tst_device->dev, + fmt_id, NULL)); + if (TST_RET == -1) + tst_brk(TBROK, + "quotactl with Q_QUOTAON returned %ld", TST_RET); + quota_on = 1; + } + + if (tc->exp_err == EPERM) { + tst_cap_action(&dropadmin); + drop_flag = 1; + } + + if (tst_variant) { + if (tc->exp_err == ENOTBLK) { + tst_res(TCONF, "quotactl_fd() doesn't have this error, skip"); + return; + } + } + if (tc->exp_err == ENOTBLK) + TEST(do_quotactl(fd, tc->cmd, "/dev/null", *tc->id, tc->addr)); + else + TEST(do_quotactl(fd, tc->cmd, tst_device->dev, *tc->id, tc->addr)); + + if (TST_RET == -1) { + if (tc->exp_err == TST_ERR) { + tst_res(TPASS | TTERRNO, "quotactl failed as expected"); + } else { + tst_res(TFAIL | TTERRNO, + "quotactl failed unexpectedly; expected %s, but got", + tst_strerrno(tc->exp_err)); + } + } else { + tst_res(TFAIL, "quotactl returned wrong value: %ld", TST_RET); + } + + if (quota_on) { + TEST(do_quotactl(fd, QCMD(Q_QUOTAOFF, USRQUOTA), tst_device->dev, + fmt_id, NULL)); + if (TST_RET == -1) + tst_brk(TBROK, + "quotactl with Q_QUOTAOFF returned %ld", TST_RET); + quota_on = 0; + } + + if (drop_flag) { + tst_cap_action(&needadmin); + drop_flag = 0; + } +} + +static void setup(void) +{ + unsigned int i; + const char *const fs_opts[] = { "-O quota", NULL}; + + quotactl_info(); + SAFE_MKFS(tst_device->dev, tst_device->fs_type, fs_opts, NULL); + SAFE_MOUNT(tst_device->dev, MNTPOINT, tst_device->fs_type, 0, NULL); + mount_flag = 1; + + fd = SAFE_OPEN(MNTPOINT, O_RDONLY); + TEST(do_quotactl(fd, QCMD(Q_GETNEXTQUOTA, USRQUOTA), tst_device->dev, + test_id, (void *) &res_ndq)); + if (TST_ERR == EINVAL || TST_ERR == ENOSYS) + getnextquota_nsup = 1; + + for (i = 0; i < ARRAY_SIZE(tcases); i++) { + if (!tcases[i].addr) + tcases[i].addr = tst_get_bad_addr(NULL); + } +} + +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_kconfigs = (const char *[]) { + "CONFIG_QFMT_V2", + NULL + }, + .tcnt = ARRAY_SIZE(tcases), + .test = verify_quotactl, + .dev_fs_type = "ext4", + .mntpoint = MNTPOINT, + .needs_device = 1, + .needs_root = 1, + .test_variants = QUOTACTL_SYSCALL_VARIANTS, + .needs_cmds = (const char *[]) { + "mkfs.ext4 >= 1.43.0", + NULL + } +}; From patchwork Mon Dec 13 07:26:54 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Yang Xu \\(Fujitsu\\)" X-Patchwork-Id: 1567170 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: bilbo.ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=fujitsu.com header.i=@fujitsu.com header.a=rsa-sha256 header.s=170520fj header.b=vWOEbc6H; dkim-atps=neutral Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.linux.it (client-ip=213.254.12.146; helo=picard.linux.it; envelope-from=ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it; receiver=) Received: from picard.linux.it (picard.linux.it [213.254.12.146]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits)) (No client certificate requested) by bilbo.ozlabs.org (Postfix) with ESMTPS id 4JCClr2Psvz9s1l for ; Mon, 13 Dec 2021 18:28:08 +1100 (AEDT) Received: from picard.linux.it (localhost [IPv6:::1]) by picard.linux.it (Postfix) with ESMTP id 30FCE3C892C for ; Mon, 13 Dec 2021 08:28:06 +0100 (CET) X-Original-To: ltp@lists.linux.it Delivered-To: ltp@picard.linux.it Received: from in-6.smtp.seeweb.it (in-6.smtp.seeweb.it [217.194.8.6]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by picard.linux.it (Postfix) with ESMTPS id F37103C2242 for ; Mon, 13 Dec 2021 08:28:04 +0100 (CET) Received: from mail1.bemta32.messagelabs.com (mail1.bemta32.messagelabs.com [195.245.230.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by in-6.smtp.seeweb.it (Postfix) with ESMTPS id 53B4B1400DA6 for ; Mon, 13 Dec 2021 08:28:04 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.com; s=170520fj; t=1639380483; i=@fujitsu.com; bh=guizuOM7M52J3UnaOe0kFTYgtXezq5oHJ0qOVFn/dQA=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=vWOEbc6HF2PlHstuNLqN63cTE0sA77kIYSjFqpIwFTvpIDoup2FFgjvwiw7L93+wy w78NzwM0DTWntNtEQ9K40cMC1oTysai7+8fy+DO5+JgA8RkNa0R/Vu+gtFJtyl0goY rv/cW4oE/jTOgWatSj6vvdRK2HNjD1XDKFc/J17GifVr2aYXaKGc7RTq+2WM9X6ykw F0F9gIQC3fbMI4baibcZckjyl8KW5vE+83HJQsp5+cb859Bc692xYo24kTFuohLloy AcW+3zE9kAmr0xlBEWpkS/NWoFeC0eGl3zEYV+CuJOjT1Oax0flfrWvsfjCBP99wHF I+g2eFypaLqZA== Received: from [100.115.1.47] (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256 bits)) by server-3.bemta.az-a.eu-west-1.aws.ess.symcld.net id 80/ED-13695-306F6B16; Mon, 13 Dec 2021 07:28:03 +0000 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrGIsWRWlGSWpSXmKPExsViZ8ORqMv8bVu iwZ8DPBYrvu9gdGD02Pd7HWsAYxRrZl5SfkUCa8aVdfeZC/4KVny+vJetgXETfxcjF4eQwFlG iRnzzrFDODuZJKa0vmKFcPYwSizZvIq5i5GTg01AU+JZ5wIwW0RAQqKj4S07iM0soC6xfNIvJ hBbWMBT4uW+VjCbRUBVYuOG62wgNi9QfOKWtWD1EgIKElMevgebwyngJfHuwn1GEFtIIEliQu tsJoh6QYmTM5+wQMyXkDj44gUzRK+ixKWOb4wQdoXErFltTBC2msTVc5uYJzAKzkLSPgtJ+wJ GplWMlklFmekZJbmJmTm6hgYGuoaGprrGuhZmeolVuol6qaW65anFJbqGeonlxXqpxcV6xZW5 yTkpenmpJZsYgUGcUswctoPxT+9PvUOMkhxMSqK83xi3JgrxJeWnVGYkFmfEF5XmpBYfYpTh4 FCS4PX6si1RSLAoNT21Ii0zBxhRMGkJDh4lEd7VX4HSvMUFibnFmekQqVOMuhyXr89bxCzEkp eflyolzvsXZIYASFFGaR7cCFh0X2KUlRLmZWRgYBDiKUgtys0sQZV/xSjOwagkzBsAMoUnM68 EbtMroCOYgI5grNwMckRJIkJKqoHJc/dl/ahdE0z37UnXMb3klyN9uUa+nsV0ucd99pCOEyl/ D2tkaVwWvZqR0rdkilfVhLwyp0uc+Uy5mS+u/m/9LV1iGX1zx7+wZXcL9gdWXBe9NDN67YWZp ycVHWedk3f90MRO68nvD/78XXeBd8KjArX8joh3UrI9e7nO1tV9OrLzQ+Uv71tqMu6VDZfecf x/9f3txawXq8yn3WtgvHxCNiV89Zdf5fr/d7J4Z8/pc7O5avKzgGG7leCORNXS1ccCDAPLni+ 0XB/VWL83UCc6Z/nFw1sOT29mLgyw/VZ93eB81cz/rf5H3y/afCU/1fvszPC13aerj15tuVK5 ae95Z+tdzfzbb6z8Zb/m9WrOFCWW4oxEQy3mouJEAMWIv/9pAwAA X-Env-Sender: xuyang2018.jy@fujitsu.com X-Msg-Ref: server-8.tower-587.messagelabs.com!1639380482!213874!1 X-Originating-IP: [62.60.8.97] X-SYMC-ESS-Client-Auth: outbound-route-from=pass X-StarScan-Received: X-StarScan-Version: 9.81.7; banners=-,-,- X-VirusChecked: Checked Received: (qmail 13464 invoked from network); 13 Dec 2021 07:28:03 -0000 Received: from unknown (HELO n03ukasimr01.n03.fujitsu.local) (62.60.8.97) by server-8.tower-587.messagelabs.com with ECDHE-RSA-AES256-GCM-SHA384 encrypted SMTP; 13 Dec 2021 07:28:03 -0000 Received: from n03ukasimr01.n03.fujitsu.local (localhost [127.0.0.1]) by n03ukasimr01.n03.fujitsu.local (Postfix) with ESMTP id B9A7B10023D for ; Mon, 13 Dec 2021 07:28:02 +0000 (GMT) Received: from R01UKEXCASM126.r01.fujitsu.local (unknown [10.183.43.178]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by n03ukasimr01.n03.fujitsu.local (Postfix) with ESMTPS id AE466100239 for ; Mon, 13 Dec 2021 07:28:02 +0000 (GMT) Received: from localhost.localdomain (10.167.220.84) by R01UKEXCASM126.r01.fujitsu.local (10.183.43.178) with Microsoft SMTP Server (TLS) id 15.0.1497.26; Mon, 13 Dec 2021 07:27:46 +0000 From: Yang Xu To: Date: Mon, 13 Dec 2021 15:26:54 +0800 Message-ID: <1639380414-24390-6-git-send-email-xuyang2018.jy@fujitsu.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1639380414-24390-1-git-send-email-xuyang2018.jy@fujitsu.com> References: <1639380414-24390-1-git-send-email-xuyang2018.jy@fujitsu.com> MIME-Version: 1.0 X-Originating-IP: [10.167.220.84] X-ClientProxiedBy: G08CNEXCHPEKD07.g08.fujitsu.local (10.167.33.80) To R01UKEXCASM126.r01.fujitsu.local (10.183.43.178) X-Virus-Scanned: clamav-milter 0.102.4 at in-6.smtp.seeweb.it X-Virus-Status: Clean X-Spam-Status: No, score=0.1 required=7.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS autolearn=disabled version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on in-6.smtp.seeweb.it Subject: [LTP] [PATCH v4 6/6] syscalls/quotactl07: Add quotactl_fd test variant X-BeenThere: ltp@lists.linux.it X-Mailman-Version: 2.1.29 Precedence: list List-Id: Linux Test Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: ltp-bounces+incoming=patchwork.ozlabs.org@lists.linux.it Sender: "ltp" Also man-pages has error that Q_XQUOTARM was not introduced by kernel 3.16. So use invalid type directly Signed-off-by: Yang Xu Reviewed-by: Cyril Hrubis --- .../kernel/syscalls/quotactl/quotactl07.c | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/testcases/kernel/syscalls/quotactl/quotactl07.c b/testcases/kernel/syscalls/quotactl/quotactl07.c index 2992a6112..6e2079e0f 100644 --- a/testcases/kernel/syscalls/quotactl/quotactl07.c +++ b/testcases/kernel/syscalls/quotactl/quotactl07.c @@ -16,21 +16,18 @@ #include #include #include "tst_test.h" -#include "lapi/quotactl.h" +#include "quotactl_syscall_var.h" #ifdef HAVE_XFS_XQM_H # include -#define MNTPOINT "mntpoint" -static uint32_t qflag_acct = XFS_QUOTA_UDQ_ACCT; -static unsigned int valid_type = XFS_USER_QUOTA; /* Include a valid quota type to avoid other EINVAL error */ static unsigned int invalid_type = XFS_GROUP_QUOTA << 1 | XFS_USER_QUOTA; static void verify_quota(void) { - TEST(quotactl(QCMD(Q_XQUOTARM, USRQUOTA), tst_device->dev, 0, (void *)&invalid_type)); + 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 @@ -39,17 +36,19 @@ static void verify_quota(void) static void setup(void) { - TEST(quotactl(QCMD(Q_XQUOTAOFF, USRQUOTA), tst_device->dev, 0, (void *)&qflag_acct)); - if (TST_RET == -1) - tst_brk(TBROK | TTERRNO, "quotactl with Q_XQUOTAOFF failed"); + quotactl_info(); + fd = SAFE_OPEN(MNTPOINT, O_RDONLY); +} - TEST(quotactl(QCMD(Q_XQUOTARM, USRQUOTA), tst_device->dev, 0, (void *)&valid_type)); - if (TST_ERR == EINVAL) - tst_brk(TCONF, "current system doesn't support Q_XQUOTARM, skip it"); +static void cleanup(void) +{ + if (fd > -1) + SAFE_CLOSE(fd); } static struct tst_test test = { .setup = setup, + .cleanup = cleanup, .needs_root = 1, .needs_kconfigs = (const char *[]) { "CONFIG_XFS_QUOTA", @@ -60,6 +59,7 @@ static struct tst_test test = { .dev_fs_type = "xfs", .mnt_data = "usrquota", .mntpoint = MNTPOINT, + .test_variants = QUOTACTL_SYSCALL_VARIANTS, .tags = (const struct tst_tag[]) { {"linux-git", "3dd4d40b4208"}, {}