xfs
[Top] [All Lists]

Re: [PATCH] xfs/133 134: filter redundant projid 0 quota report

To: xfs@xxxxxxxxxxx
Subject: Re: [PATCH] xfs/133 134: filter redundant projid 0 quota report
From: Eric Sandeen <sandeen@xxxxxxxxxxx>
Date: Wed, 11 May 2016 11:04:28 -0500
Delivered-to: xfs@xxxxxxxxxxx
In-reply-to: <1462979156-7648-1-git-send-email-zlang@xxxxxxxxxx>
References: <1462979156-7648-1-git-send-email-zlang@xxxxxxxxxx>
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:45.0) Gecko/20100101 Thunderbird/45.0
On 5/11/16 10:05 AM, Zorro Lang wrote:
> After GETNEXTQUOTA ioctl be supported, xfs_quota -c "report" always
> outputs one more quota info about default quota (as project ID 0).
> For fix this problem, xfsprogs has merged commit 3d607a1.

This is only for project quota, right?  user & group quota always
reports id 0 / root, because it exists in the passwd and group files.

> Now xfstests face this same problem from this issue. xfs/133 and
> xfs/134 can't match their golden output, due to this one more line
> quota report output. So this patch filter this redundant quota info.

It seems to do more than filter; see below.

> Signed-off-by: Zorro Lang <zlang@xxxxxxxxxx>
> Signed-off-by: Eryu Guan <eguan@xxxxxxxxxx>
> ---
> 
> Hi,
> 
> We found this problem when:
> http://thread.gmane.org/gmane.comp.file-systems.fstests/1852/focus=1968
> 
> But we didn't make a suitable decision about how to deal with it. Then
> Eryu hit this problem again and wrote a patch for xfstests:
> http://oss.sgi.com/archives/xfs/2016-04/msg00002.html
> 
> This pushed us decide to fix this problem. Now xfsprogs commit 3d607a1
> has been merged to resolve this problem. But after that xfstests still
> face one more line quota report problem, so I modify some code of Eryu's
> old patch, and send this new patch for fix that.
> 
> Thanks,
> Zorro
> 
>  tests/xfs/133 |  3 ++-
>  tests/xfs/134 | 27 +++++++++++++++++----------
>  2 files changed, 19 insertions(+), 11 deletions(-)
> 
> diff --git a/tests/xfs/133 b/tests/xfs/133
> index 82c38b1..ebf008b 100755
> --- a/tests/xfs/133
> +++ b/tests/xfs/133
> @@ -67,6 +67,7 @@ EOF
>  
>       cat >$tmp.projid <<EOF
>  $qa_project:10
> +root:0
>  EOF
>  
>       $XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid -x \
> @@ -81,7 +82,7 @@ EOF
>  
>       echo "=== report command output ==="
>       $XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid -x \
> -             -c "report -p -N -b" $SCRATCH_MNT | _filter_quota
> +             -c "report -p -N -b" $SCRATCH_MNT | _filter_quota | grep -v 
> "^root "
>  }
>  
>  # Test project
> diff --git a/tests/xfs/134 b/tests/xfs/134
> index be18ee8..a46a734 100755
> --- a/tests/xfs/134
> +++ b/tests/xfs/134
> @@ -52,14 +52,15 @@ _require_test
>  _require_xfs_quota
>  
>  dir=$SCRATCH_MNT/project
> +proj_num=1
>  
>  #project quota files
>  cat >$tmp.projects <<EOF
> -1:$dir
> +${proj_num}:$dir
>  EOF
>  
>  cat >$tmp.projid <<EOF
> -test:1
> +test:${proj_num}
>  EOF

What is the reason for these changes?

>  cp /dev/null $seqres.full
> @@ -87,17 +88,24 @@ fi
>  src/feature -p $SCRATCH_DEV
>  [ $? -ne 0 ] && _notrun "Installed kernel does not support project quotas"
>  
> +report_quota()
> +{
> +    $XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid -x \
> +                 -c "repquota -inN -p -L $proj_num -U $proj_num" \
> +                 $SCRATCH_DEV | tr -s '[:space:]'
> +}

Oh, ok, so you can directly query only one ID.

Well, this changes the behavior of the test a bit; it no longer exercises
the getnextquota path, and instead specifically queries a single id.
That seems like a fairly significant change to the test, when the 
patch claims to simply filter out projid 0.

Why not just do it as an actual filter, i.e.:



diff --git a/common/filter b/common/filter
index 1be377c..2012729 100644
--- a/common/filter
+++ b/common/filter
@@ -302,6 +302,13 @@ _filter_quota()
        sed -e 'N;s/TEST_DEV\n/TEST_DEV/g'
 }
 
+_filter_project_quota()
+{
+       # Project ID 0 is always present on disk but was not reported
+       # until the GETNEXTQUOTA ioctl came into use.  Filter it out.
+       _filter_quota | grep -v "^\#0"
+}
+
 # Account for different "ln" failure messages
 _filter_ln()
 {
diff --git a/tests/xfs/133 b/tests/xfs/133
index 82c38b1..5148c50 100755
--- a/tests/xfs/133
+++ b/tests/xfs/133
@@ -77,11 +77,12 @@ EOF
 
        echo "=== quota command output ==="
        $XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid \
-               -c "quota -p -v -b $qa_project" $SCRATCH_MNT | _filter_quota
+               -c "quota -p -v -b $qa_project" $SCRATCH_MNT \
+               | _filter_project_quota
 
        echo "=== report command output ==="
        $XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid -x \
-               -c "report -p -N -b" $SCRATCH_MNT | _filter_quota
+               -c "report -p -N -b" $SCRATCH_MNT | _filter_project_quota
 }
 
 # Test project
diff --git a/tests/xfs/134 b/tests/xfs/134
index be18ee8..dff8cf5 100755
--- a/tests/xfs/134
+++ b/tests/xfs/134
@@ -87,17 +87,25 @@ fi
 src/feature -p $SCRATCH_DEV
 [ $? -ne 0 ] && _notrun "Installed kernel does not support project quotas"
 
+report_quota()
+{
+       $XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid -x \
+               -c "repquota -inN -p -L $proj_num -U $proj_num" \
+               $SCRATCH_DEV | tr -s '[:space:]' \
+               | _filter_project_quota
+}
+
 mkdir $dir
 $XFS_IO_PROG -r -c "chproj -R 1" -c "chattr -R +P" $dir
 
 xfs_quota -D $tmp.projects -P $tmp.projid -x \
     -c "limit -p bsoft=100m bhard=100m 1" $SCRATCH_DEV
-xfs_quota -D $tmp.projects -P $tmp.projid -x -c "repquota -inN -p" 
$SCRATCH_DEV | tr -s '[:space:]'
+report_quota
 touch $dir/1
 touch $dir/2
 cp $dir/2 $dir/3
 
-xfs_quota -D $tmp.projects -P $tmp.projid -x -c "repquota -inN -p" 
$SCRATCH_DEV | tr -s '[:space:]'
+report_quota
 
 if [ "$HOSTOS" == "IRIX" ] ; then
     mkfile 1M $TEST_DIR/6
@@ -107,12 +115,12 @@ fi
 
 #try cp to dir
 cp $TEST_DIR/6 $dir/6
-xfs_quota -D $tmp.projects -P $tmp.projid -x -c "repquota -inN -p" 
$SCRATCH_DEV | tr -s '[:space:]'
+report_quota
 
 #try mv to dir
 mv $TEST_DIR/6 $dir/7
 
-xfs_quota -D $tmp.projects -P $tmp.projid -x -c "repquota -inN -p" 
$SCRATCH_DEV | tr -s '[:space:]'
+report_quota
 
 # success, all done
 status=0



-Eric

<Prev in Thread] Current Thread [Next in Thread>