Message ID | 1463021719-9814-1-git-send-email-zlang@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On 5/11/16 9:55 PM, 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. > > 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 > out. > > There're 3 kinds of xfsprogs: > 1. not support GETNEXTQUOTA > 2. support GETNEXTQUOTA but not merged commit 3d607a1 > 3. The newest one support all > > The 1st one won't report Project ID 0, the 2nd will report projid 0 > info as "(null) 0 0 0 ...", the 3rd will report projid 0 info as > "#0 0 0 0 ...". For deal with all of these situations, we will use > > _filter_quota | grep -v "^#0 \|^(null) " > > But if someone specify a name for projid 0, e.g. > # cat $projid_file > # root:0 > > I think that means someone want to deal with it by himself, the > common filter won't filter it out. > > Signed-off-by: Zorro Lang <zlang@redhat.com> > Signed-off-by: Eryu Guan <eguan@redhat.com> Reviewed-by: Eric Sandeen <sandeen@redhat.com> > --- > > Hi, > > Follow Eric's suggestion, I add a new filter function. I have tested > below situations: > 1. New kernel(support GETNEXTQUOTA) with xfsprogs support GETNEXTQUOTA. > 2. New kernel with the newest xfsprogs merged commit 3d607a1 > 3. Old kernel(not support GETNEXTQUOTA) with xsfprogs not support GETNEXTQUOTA. > > Test passed. > > Thanks, > Zorro > > common/filter | 9 +++++++++ > tests/xfs/133 | 2 +- > tests/xfs/134 | 20 +++++++++++++------- > 3 files changed, 23 insertions(+), 8 deletions(-) > > diff --git a/common/filter b/common/filter > index 1be377c..244621a 100644 > --- a/common/filter > +++ b/common/filter > @@ -302,6 +302,15 @@ _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. > + # But if you specify a name for ID 0, that means you want to > + # deal with it by yourself, this function won't filter it out. > + _filter_quota | grep -v "^\#0 \|^(null) " > +} > + > # Account for different "ln" failure messages > _filter_ln() > { > diff --git a/tests/xfs/133 b/tests/xfs/133 > index 82c38b1..f77bc79 100755 > --- a/tests/xfs/133 > +++ b/tests/xfs/133 > @@ -81,7 +81,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_project_quota > } > > # Test project > diff --git a/tests/xfs/134 b/tests/xfs/134 > index be18ee8..cd47069 100755 > --- a/tests/xfs/134 > +++ b/tests/xfs/134 > @@ -87,17 +87,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" $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 \ > +$XFS_QUOTA_PROG -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 +114,11 @@ 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 > -- To unsubscribe from this list: send the line "unsubscribe fstests" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/common/filter b/common/filter index 1be377c..244621a 100644 --- a/common/filter +++ b/common/filter @@ -302,6 +302,15 @@ _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. + # But if you specify a name for ID 0, that means you want to + # deal with it by yourself, this function won't filter it out. + _filter_quota | grep -v "^\#0 \|^(null) " +} + # Account for different "ln" failure messages _filter_ln() { diff --git a/tests/xfs/133 b/tests/xfs/133 index 82c38b1..f77bc79 100755 --- a/tests/xfs/133 +++ b/tests/xfs/133 @@ -81,7 +81,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_project_quota } # Test project diff --git a/tests/xfs/134 b/tests/xfs/134 index be18ee8..cd47069 100755 --- a/tests/xfs/134 +++ b/tests/xfs/134 @@ -87,17 +87,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" $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 \ +$XFS_QUOTA_PROG -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 +114,11 @@ 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