All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zorro Lang <zlang@redhat.com>
To: "Darrick J. Wong" <darrick.wong@oracle.com>
Cc: fstests@vger.kernel.org, linux-ext4@vger.kernel.org,
	linux-xfs@vger.kernel.org, Andreas Dilger <adilger@dilger.ca>
Subject: Re: [PATCH] generic: test statfs on project quota directory
Date: Fri, 14 Jun 2019 11:57:54 +0800	[thread overview]
Message-ID: <20190614035754.GC30864@dhcp-12-102.nay.redhat.com> (raw)
In-Reply-To: <20190612150507.GB3773859@magnolia>

On Wed, Jun 12, 2019 at 08:05:07AM -0700, Darrick J. Wong wrote:
> On Wed, Jun 12, 2019 at 03:32:13PM +0800, Zorro Lang wrote:
> > On Tue, May 14, 2019 at 09:28:38AM -0600, Andreas Dilger wrote:
> > > On May 12, 2019, at 7:49 PM, Zorro Lang <zlang@redhat.com> wrote:
> > > > 
> > > > There's a bug on xfs cause statfs get negative f_ffree value from
> > > > a project quota directory. It's fixed by "de7243057 fs/xfs: fix
> > > > f_ffree value for statfs when project quota is set". So add statfs
> > > > testing on project quota block and inode count limit.
> > > > 
> > > > For testing foreign fs quota, change _qmount() function, turn on
> > > > project if quotaon support.
> > > > 
> > > > Signed-off-by: Zorro Lang <zlang@redhat.com>
> > > > ---
> > > > 
> > > > Hi,
> > > > 
> > > > (Long time passed, re-send this patch again to get reviewing)
> > > > 
> > > > There's one thing I don't understand, so CC ext4 mail list. Please
> > > > feel free to reply, if anyone knows that:
> > > > 
> > > > $ mkfs.ext4 $SCRATCH_DEV
> > > > $ tune2fs -O quota,project $SCRATCH_DEV
> > > > $ mount $SCRATCH_DEV $SCRATCH_MNT -o prjquota
> > > > $ quotaon -P $SCRATCH_MNT
> > > > $ mkdir $SCRATCH_MNT/t
> > > > $ xfs_quota -f -x -c "project -p $SCRATCH_MNT/t -s 42" $SCRATCH_MNT
> > > > $ xfs_quota -f -x -c "limit -p bsoft=100m answer" $SCRATCH_MNT
> > > > $ df -k $SCRATCH_MNT/t
> > > > Filesystem    1K-blocks  Used Available Use% Mounted on
> > > > SCRATCH_DEV    102400     4    102396   1% SCRATCH_MNT
> > > > 
> > > > On XFS, the 'Used' field always shows '0'. But why ext4 always has
> > > > more 4k? Is it a bug or expected.
> > > 
> > > Each directory in ext4 consumes a 4KB block, so setting the project
> > > quota on a directory always consumes at least one block.
> > 
> > Ping fstests@vger.kernel.org.
> > 
> > One month passed. Is there anything else block this patch merge?
> 
> If this is a regression test for an xfs bug, why isn't this in
> tests/xfs/ ?  Especially because ext4 has different behaviors that clash
> with the golden output -- what happens if you run this with inline data
> enabled?

Hi Darrick,

Yes, it's a regression test for xfs bug:
de7243057e7c fs/xfs: fix f_ffree value for statfs when project quota is set

It's not a xfs only case, due to I thought the test steps are common. If I
change it to a generic case, it can cover more. Do you think I should change
it back to XFS only case?

Thanks,
Zorro

> 
> --D
> 
> > Thanks,
> > Zorro
> > 
> > > 
> > > Cheers, Andreas
> > > 
> > > > common/quota          |  4 +++
> > > > tests/generic/999     | 74 +++++++++++++++++++++++++++++++++++++++++++
> > > > tests/generic/999.out |  3 ++
> > > > tests/generic/group   |  1 +
> > > > 4 files changed, 82 insertions(+)
> > > > create mode 100755 tests/generic/999
> > > > create mode 100644 tests/generic/999.out
> > > > 
> > > > diff --git a/common/quota b/common/quota
> > > > index f19f81a1..315df8cb 100644
> > > > --- a/common/quota
> > > > +++ b/common/quota
> > > > @@ -200,6 +200,10 @@ _qmount()
> > > >    if [ "$FSTYP" != "xfs" ]; then
> > > >        quotacheck -ug $SCRATCH_MNT >>$seqres.full 2>&1
> > > >        quotaon -ug $SCRATCH_MNT >>$seqres.full 2>&1
> > > > +	# try to turn on project quota if it's supported
> > > > +	if quotaon --help 2>&1 | grep -q '\-\-project'; then
> > > > +		quotaon --project $SCRATCH_MNT >>$seqres.full 2>&1
> > > > +	fi
> > > >    fi
> > > >    chmod ugo+rwx $SCRATCH_MNT
> > > > }
> > > > diff --git a/tests/generic/999 b/tests/generic/999
> > > > new file mode 100755
> > > > index 00000000..555341f1
> > > > --- /dev/null
> > > > +++ b/tests/generic/999
> > > > @@ -0,0 +1,74 @@
> > > > +#! /bin/bash
> > > > +# SPDX-License-Identifier: GPL-2.0
> > > > +# Copyright (c) 2019 Red Hat, Inc.  All Rights Reserved.
> > > > +#
> > > > +# FS QA Test No. 999
> > > > +#
> > > > +# Test statfs when project quota is set.
> > > > +# Uncover de7243057 fs/xfs: fix f_ffree value for statfs when project quota is set
> > > > +#
> > > > +seq=`basename $0`
> > > > +seqres=$RESULT_DIR/$seq
> > > > +echo "QA output created by $seq"
> > > > +
> > > > +here=`pwd`
> > > > +tmp=/tmp/$$
> > > > +status=1	# failure is the default!
> > > > +trap "_cleanup; exit \$status" 0 1 2 3 15
> > > > +
> > > > +_cleanup()
> > > > +{
> > > > +	cd /
> > > > +	_scratch_unmount
> > > > +	rm -f $tmp.*
> > > > +}
> > > > +
> > > > +# get standard environment, filters and checks
> > > > +. ./common/rc
> > > > +. ./common/filter
> > > > +. ./common/quota
> > > > +
> > > > +# remove previous $seqres.full before test
> > > > +rm -f $seqres.full
> > > > +
> > > > +# real QA test starts here
> > > > +_supported_fs generic
> > > > +_supported_os Linux
> > > > +_require_scratch
> > > > +_require_quota
> > > > +_require_xfs_quota_foreign
> > > > +
> > > > +_scratch_mkfs >/dev/null 2>&1
> > > > +_scratch_enable_pquota
> > > > +_qmount_option "prjquota"
> > > > +_qmount
> > > > +_require_prjquota $SCRATCH_DEV
> > > > +
> > > > +# Create a directory to be project object, and create a file to take 64k space
> > > > +mkdir $SCRATCH_MNT/t
> > > > +$XFS_IO_PROG -f -c "pwrite 0 65536" -c sync $SCRATCH_MNT/t/file >>$seqres.full
> > > > +
> > > > +# Setup temporary replacements for /etc/projects and /etc/projid
> > > > +cat >$tmp.projects <<EOF
> > > > +42:$SCRATCH_MNT/t
> > > > +EOF
> > > > +
> > > > +cat >$tmp.projid <<EOF
> > > > +answer:42
> > > > +EOF
> > > > +
> > > > +quota_cmd="$XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid"
> > > > +$quota_cmd -x -c 'project -s answer' $SCRATCH_MNT >/dev/null 2>&1
> > > > +$quota_cmd -x -c 'limit -p isoft=53 bsoft=100m answer' $SCRATCH_MNT
> > > > +
> > > > +# The itotal and size should be 53 and 102400(k), as above project quota limit.
> > > > +# The isued and used should be 2 and 64(k), as this case takes. But ext4 always
> > > > +# shows more 4k 'used' space than XFS, it prints 68k at here. So filter the
> > > > +# 6[48] at the end.
> > > > +df -k --output=file,itotal,iused,size,used $SCRATCH_MNT/t | \
> > > > +	_filter_scratch | _filter_spaces | \
> > > > +	sed -e "/SCRATCH_MNT/s/6[48]/N/"
> > > > +
> > > > +# success, all done
> > > > +status=0
> > > > +exit
> > > > diff --git a/tests/generic/999.out b/tests/generic/999.out
> > > > new file mode 100644
> > > > index 00000000..1bebabd4
> > > > --- /dev/null
> > > > +++ b/tests/generic/999.out
> > > > @@ -0,0 +1,3 @@
> > > > +QA output created by 999
> > > > +File Inodes IUsed 1K-blocks Used
> > > > +SCRATCH_MNT/t 53 2 102400 N
> > > > diff --git a/tests/generic/group b/tests/generic/group
> > > > index 9f4845c6..35da10a5 100644
> > > > --- a/tests/generic/group
> > > > +++ b/tests/generic/group
> > > > @@ -542,3 +542,4 @@
> > > > 537 auto quick trim
> > > > 538 auto quick aio
> > > > 539 auto quick punch seek
> > > > +999 auto quick quota
> > > > --
> > > > 2.17.2
> > > > 
> > > 
> > > 
> > > Cheers, Andreas
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > 
> > > Cheers, Andreas
> > > 
> > > 
> > > 
> > > 
> > > 
> > 
> > 

  reply	other threads:[~2019-06-14  3:52 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-13  1:49 [PATCH] generic: test statfs on project quota directory Zorro Lang
2019-05-14 15:28 ` Andreas Dilger
2019-06-12  7:32   ` Zorro Lang
2019-06-12 15:05     ` Darrick J. Wong
2019-06-14  3:57       ` Zorro Lang [this message]
  -- strict thread matches above, loose matches on Subject: below --
2019-04-11  8:46 Zorro Lang

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20190614035754.GC30864@dhcp-12-102.nay.redhat.com \
    --to=zlang@redhat.com \
    --cc=adilger@dilger.ca \
    --cc=darrick.wong@oracle.com \
    --cc=fstests@vger.kernel.org \
    --cc=linux-ext4@vger.kernel.org \
    --cc=linux-xfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.