On 08/27/2013 08:51 PM, [email protected] wrote:
> Hi!
>> +/*
>> + * func_qoff() - check the functionality of the Q_XQUOTAOFF flag of quotactl
>> + */
>
> These type of comments is not usefull at all. Just name the function so
> that it's clear what it does, for this one something like
> check_qoff(void) would do.
Ok.
>
>> +static void func_qoff(void)
>> +{
>> + int ret;
>> +
>> + ret = ltp_syscall(__NR_quotactl, USRQCMD(Q_XGETQSTAT),
>> + dev, uid, &qstat);
>> + if (ret != 0)
>> + tst_brkm(TBROK | TERRNO, cleanup, "fail to get quota stat");
>> +
>> + if (qstat.qs_flags & XFS_QUOTA_UDQ_ENFD) {
>> + tst_resm(TFAIL, "enforcement is not off");
>> + return;
>> + }
>> +
>> + tst_resm(TPASS, "enforcement is off");
>> +}
>> +
>> +/*
>> + * func_qon() - check the functionality of the Q_XQUOTAON flag of quotactl
>> + */
>> +static void func_qon(void)
>> +{
>> + int ret;
>> + ret = ltp_syscall(__NR_quotactl, USRQCMD(Q_XGETQSTAT),
>> + dev, uid, &qstat);
>> + if (ret != 0)
>> + tst_brkm(TBROK | TERRNO, cleanup, "fail to get quota stat");
>> +
>> + if (!(qstat.qs_flags & XFS_QUOTA_UDQ_ENFD)) {
>> + tst_resm(TFAIL, "enforcement is off");
>> + return;
>> + }
>> +
>> + tst_resm(TPASS, "enforcement is on");
>> +}
>> +
>> +/*
>> + * func_getq() - check the functionality of the Q_XGETQUOTA flag of quotactl
>> + */
>> +static void func_getq(void)
>> +{
>> + if (!(dquota.d_flags & XFS_USER_QUOTA)) {
>> + tst_resm(TFAIL, "get incorrect quota type");
>> + return;
>> + }
>> +
>> + tst_resm(TPASS, "get the right quota type");
>> +}
>> +
>> +/*
>> + * setup_setqlim() - set up for the Q_XSETQLIM flag of quotactl
>> + */
>> +static void setup_setqlim(void)
>> +{
>> + dquota.d_rtb_hardlimit = RTBLIMIT;
>> + dquota.d_fieldmask = FS_DQ_LIMIT_MASK;
>> +}
>
> You don't need to have function to statically initialize a structure, I
> would just initialized it statically and passed right pointer to the
> testcase addr.
I am afraid I don't catch your meaning.
This function setup_setqlim set up the structure "dquota" for the setqlim test,
and crucially, the structure "dquota" is used by other tests, so its value will
change after statically initializing.
>
>> +/*
>> + * func_setqlim() - check the functionality of the Q_XSETQLIM flag of
>> quotactl
>> + */
>> +static void func_setqlim(void)
>> +{
>> + int ret;
>> + ret = ltp_syscall(__NR_quotactl, USRQCMD(Q_XGETQUOTA),
>> + dev, uid, &dquota);
>> + if (ret != 0)
>> + tst_brkm(TFAIL | TERRNO, NULL,
>> + "fail to get quota information");
>> +
>> + if (dquota.d_rtb_hardlimit != RTBLIMIT) {
>> + tst_resm(TFAIL, "limit on RTB, except %lu get %lu",
>> + (uint64_t)RTBLIMIT,
>> + (uint64_t)dquota.d_rtb_hardlimit);
>> + return;
>> + }
>> +
>> + tst_resm(TPASS, "quotactl works fine with Q_XSETQLIM");
>> +}
>> +
>> +/*
>> + * func_getqstat() - check the functionality of
>> + * the Q_XGETQSTAT flag of quotactl
>> + */
>> +static void func_getqstat(void)
>> +{
>> + if (qstat.qs_version != FS_QSTAT_VERSION) {
>> + tst_resm(TFAIL, "get incorrect qstat version");
>> + return;
>> + }
>> +
>> + tst_resm(TPASS, "get correct qstat version");
>> +}
>> +
>> +static void setup(void)
>> +{
>> +
>> + tst_require_root(NULL);
>> +
>> + TEST_PAUSE;
>> +
>> + tst_tmpdir();
>> +
>> + SAFE_MKDIR(cleanup, mntpoint, 0755);
>> +
>> + uid = 0;
>> + strncpy(dev, block_dev, PATH_MAX);
>
> I think that copying block_dev to dev is pointless, I haven't seen a
> single place where block_dev couldn't be used directly, or am I
> mistaken?
Oh, it's my carelessness.
It's because prior to dropping "dev" from struct test_case_t, there is some
warning when using "block_dev" both in struct option_t and struct test_case_t.
The coming v3 will fix it.
>
>> + tst_mkfs(NULL, dev, "xfs", "-f");
>
> I still think that the '-f' should go to the library instead. Or we can
> zero start of the device (where the filesystem superblock and signatures
> are, which should be first few bytes) before we call the mkfs.
I vote to "add the -f parameter in the tst_mkfs() if fs_type is xfs"
The coming v3 will cut the option "-f".
Thanks,
DAN LI
>
------------------------------------------------------------------------------
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58040911&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list