On Tue, Apr 26, 2022 at 12:14:53AM -0500, Eric Sandeen wrote: > This test was designed to validate the quota warning limit, which in > theory was supposed to migrate from a soft quota to hard enforcement > after a certain number of warnings. However, the xfs kernel commit > which incremented the warning counter was reverted; see: > > xfs: revert "xfs: actually bump warning counts when we send warnings" > > in the kernel tree for an explanation of why. Due to that revert, > which removed this functionality, remove this test. > > Signed-off-by: Eric Sandeen <sandeen@xxxxxxxxxx> > --- Reviewed-by: Zorro Lang <zlang@xxxxxxxxxx> And as we've talked, I'll write a new one case: 2022-04-14 23:26 < sandeen> so you're suggesting that another test which exceeds soft quota with many writes is a good idea, and would have caught the quota warning /limit/ problem - right? 2022-04-14 23:26 < sandeen> that sounds reasonable to me Thanks, Zorro > tests/xfs/144 | 128 --------------------------------------------- > tests/xfs/144.out | 151 ------------------------------------------------------ > 2 files changed, 279 deletions(-) > delete mode 100755 tests/xfs/144 > delete mode 100644 tests/xfs/144.out > > diff --git a/tests/xfs/144 b/tests/xfs/144 > deleted file mode 100755 > index 5abec9a..0000000 > --- a/tests/xfs/144 > +++ /dev/null > @@ -1,128 +0,0 @@ > -#! /bin/bash > -# SPDX-License-Identifier: GPL-2.0-or-later > -# Copyright (c) 2021 Oracle. All Rights Reserved. > -# > -# FS QA Test No. 144 > -# > -# Check that quota softlimit warnings work the way they should. This means > -# that we can disobey the softlimit up to warnlimit times before it turns into > -# hard(er) enforcement. This is a functional test for quota warnings, but > -# since the functionality has been broken for decades, this is also a > -# regression test for commit 4b8628d57b72 ("xfs: actually bump warning counts > -# when we send warnings"). > - > -. ./common/preamble > -_begin_fstest auto quick quota > - > -# Import common functions. > -. ./common/filter > -. ./common/quota > - > -# real QA test starts here > -_supported_fs xfs > -_require_xfs_quota > -_require_scratch > - > -exercise() { > - _scratch_mkfs_xfs | _filter_mkfs 2>$tmp.mkfs > - cat $tmp.mkfs >>$seqres.full > - > - # keep the blocksize and data size for dd later > - . $tmp.mkfs > - > - _qmount > - > - _qsetup $1 > - > - echo "Using type=$type id=$id" >>$seqres.full > - > - echo > - echo "*** report initial settings" | tee -a $seqres.full > - $XFS_QUOTA_PROG -x \ > - -c "limit -$type isoft=3 ihard=500000 $id" \ > - -c "warn -$type -i -d 13" \ > - $SCRATCH_DEV > - $XFS_QUOTA_PROG -x \ > - -c "state -$type" >> $seqres.full > - $XFS_QUOTA_PROG -x \ > - -c "repquota -birnN -$type" $SCRATCH_DEV | > - _filter_quota_report | LC_COLLATE=POSIX sort -ru > - > - echo > - echo "*** push past the soft inode limit" | tee -a $seqres.full > - _file_as_id $SCRATCH_MNT/softok1 $id $type $bsize 0 > - _file_as_id $SCRATCH_MNT/softok2 $id $type $bsize 0 > - _file_as_id $SCRATCH_MNT/softok3 $id $type $bsize 0 > - _file_as_id $SCRATCH_MNT/softwarn1 $id $type $bsize 0 > - $XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid -x \ > - -c "repquota -birnN -$type" $SCRATCH_DEV | > - _filter_quota_report | LC_COLLATE=POSIX sort -ru > - > - echo > - echo "*** push further past the soft inode limit" | tee -a $seqres.full > - for warn_nr in $(seq 2 5); do > - _file_as_id $SCRATCH_MNT/softwarn$warn_nr $id $type $bsize 0 > - done > - $XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid -x \ > - -c "repquota -birnN -$type" $SCRATCH_DEV | > - _filter_quota_report | LC_COLLATE=POSIX sort -ru > - > - echo > - echo "*** push past the soft inode warning limit" | tee -a $seqres.full > - for warn_nr in $(seq 6 15); do > - _file_as_id $SCRATCH_MNT/softwarn$warn_nr $id $type $bsize 0 > - done > - $XFS_QUOTA_PROG -D $tmp.projects -P $tmp.projid -x \ > - -c "repquota -birnN -$type" $SCRATCH_DEV | > - _filter_quota_report | LC_COLLATE=POSIX sort -ru > - > - echo > - echo "*** unmount" > - _scratch_unmount > -} > - > -_scratch_mkfs > $seqres.full > -_scratch_mount >> $seqres.full > - > -chmod a+rwx $SCRATCH_MNT $seqres.full # arbitrary users will write here > -bsize=$(_get_file_block_size $SCRATCH_MNT) > -_scratch_unmount > - > -cat >$tmp.projects <<EOF > -1:$SCRATCH_MNT > -EOF > - > -cat >$tmp.projid <<EOF > -root:0 > -scratch:1 > -EOF > - > -projid_file="$tmp.projid" > - > -echo "*** user" > -_qmount_option "uquota" > -exercise u > - > -echo "*** group" > -_qmount_option "gquota" > -exercise g > - > -echo "*** uqnoenforce" > -_qmount_option "uqnoenforce" > -exercise uno > - > -echo "*** gqnoenforce" > -_qmount_option "gqnoenforce" > -exercise gno > - > -echo "*** pquota" > -_qmount_option "pquota" > -exercise p > - > -echo "*** pqnoenforce" > -_qmount_option "pqnoenforce" > -exercise pno > - > -# success, all done > -status=0 > -exit > diff --git a/tests/xfs/144.out b/tests/xfs/144.out > deleted file mode 100644 > index 963eb80..0000000 > --- a/tests/xfs/144.out > +++ /dev/null > @@ -1,151 +0,0 @@ > -QA output created by 144 > -*** user > -meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks > -data = bsize=XXX blocks=XXX, imaxpct=PCT > - = sunit=XXX swidth=XXX, unwritten=X > -naming =VERN bsize=XXX > -log =LDEV bsize=XXX blocks=XXX > -realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX > - > -*** report initial settings > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 0 3 500000 00 [--------] 0 0 0 00 [--------] > - > -*** push past the soft inode limit > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 4 3 500000 01 [7 days] 0 0 0 00 [--------] > - > -*** push further past the soft inode limit > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 8 3 500000 05 [7 days] 0 0 0 00 [--------] > - > -*** push past the soft inode warning limit > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 16 3 500000 13 [7 days] 0 0 0 00 [--------] > - > -*** unmount > -*** group > -meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks > -data = bsize=XXX blocks=XXX, imaxpct=PCT > - = sunit=XXX swidth=XXX, unwritten=X > -naming =VERN bsize=XXX > -log =LDEV bsize=XXX blocks=XXX > -realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX > - > -*** report initial settings > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 0 3 500000 00 [--------] 0 0 0 00 [--------] > - > -*** push past the soft inode limit > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 4 3 500000 01 [7 days] 0 0 0 00 [--------] > - > -*** push further past the soft inode limit > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 8 3 500000 05 [7 days] 0 0 0 00 [--------] > - > -*** push past the soft inode warning limit > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 16 3 500000 13 [7 days] 0 0 0 00 [--------] > - > -*** unmount > -*** uqnoenforce > -meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks > -data = bsize=XXX blocks=XXX, imaxpct=PCT > - = sunit=XXX swidth=XXX, unwritten=X > -naming =VERN bsize=XXX > -log =LDEV bsize=XXX blocks=XXX > -realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX > - > -*** report initial settings > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 0 3 500000 00 [--------] 0 0 0 00 [--------] > - > -*** push past the soft inode limit > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 4 3 500000 00 [--------] 0 0 0 00 [--------] > - > -*** push further past the soft inode limit > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 8 3 500000 00 [--------] 0 0 0 00 [--------] > - > -*** push past the soft inode warning limit > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 18 3 500000 00 [--------] 0 0 0 00 [--------] > - > -*** unmount > -*** gqnoenforce > -meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks > -data = bsize=XXX blocks=XXX, imaxpct=PCT > - = sunit=XXX swidth=XXX, unwritten=X > -naming =VERN bsize=XXX > -log =LDEV bsize=XXX blocks=XXX > -realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX > - > -*** report initial settings > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 0 3 500000 00 [--------] 0 0 0 00 [--------] > - > -*** push past the soft inode limit > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 4 3 500000 00 [--------] 0 0 0 00 [--------] > - > -*** push further past the soft inode limit > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 8 3 500000 00 [--------] 0 0 0 00 [--------] > - > -*** push past the soft inode warning limit > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 18 3 500000 00 [--------] 0 0 0 00 [--------] > - > -*** unmount > -*** pquota > -meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks > -data = bsize=XXX blocks=XXX, imaxpct=PCT > - = sunit=XXX swidth=XXX, unwritten=X > -naming =VERN bsize=XXX > -log =LDEV bsize=XXX blocks=XXX > -realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX > - > -*** report initial settings > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 0 3 500000 00 [--------] 0 0 0 00 [--------] > - > -*** push past the soft inode limit > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 4 3 500000 02 [7 days] 0 0 0 00 [--------] > - > -*** push further past the soft inode limit > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 8 3 500000 06 [7 days] 0 0 0 00 [--------] > - > -*** push past the soft inode warning limit > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 15 3 500000 13 [7 days] 0 0 0 00 [--------] > - > -*** unmount > -*** pqnoenforce > -meta-data=DDEV isize=XXX agcount=N, agsize=XXX blks > -data = bsize=XXX blocks=XXX, imaxpct=PCT > - = sunit=XXX swidth=XXX, unwritten=X > -naming =VERN bsize=XXX > -log =LDEV bsize=XXX blocks=XXX > -realtime =RDEV extsz=XXX blocks=XXX, rtextents=XXX > - > -*** report initial settings > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 0 3 500000 00 [--------] 0 0 0 00 [--------] > - > -*** push past the soft inode limit > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 4 3 500000 00 [--------] 0 0 0 00 [--------] > - > -*** push further past the soft inode limit > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 8 3 500000 00 [--------] 0 0 0 00 [--------] > - > -*** push past the soft inode warning limit > -[ROOT] 0 0 0 00 [--------] 3 0 0 13 [--------] 0 0 0 00 [--------] > -[NAME] 0 0 0 00 [--------] 18 3 500000 00 [--------] 0 0 0 00 [--------] > - > -*** unmount > -- > 1.8.3.1 >