On Wed, Mar 18, 2020 at 01:11:36PM -0700, Darrick J. Wong wrote: > From: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > > It turns out that repquota (which reports in units of 1k blocks) reports > rounded up numbers when the fs blocksize is 512 bytes. However, xfs_io > stat always reports block counts in units of 512 bytes. If the number > of (512b) file blocks is not an even number, the "$3 / 2" expression > will round down, causing the test to fail. Round up to the nearest 1k > to match repquota's behavior. > > Reported-by: zlang@xxxxxxxxxx > Fixes: 6b04ed05456fc6c ("generic: test unwritten extent conversion extent mapping quota accounting") > Signed-off-by: Darrick J. Wong <darrick.wong@xxxxxxxxxx> > --- > v2: improve the comments to explain exactly what we're doing and why > --- > tests/generic/587 | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/tests/generic/587 b/tests/generic/587 > index 7b07d07d..3e58a302 100755 > --- a/tests/generic/587 > +++ b/tests/generic/587 > @@ -51,13 +51,17 @@ ENDL > > # Make sure that the quota blocks accounting for qa_user on the scratch fs > # matches the stat blocks counter for the only file on the scratch fs that > -# is owned by qa_user. Note that stat reports in units of 512b blocks whereas > -# repquota reports in units of 1k blocks. > +# is owned by qa_user. > check_quota_accounting() > { > + # repquota rounds the raw numbers up to the nearest 1k when reporting > + # space usage. xfs_io stat always reports space usage in 512b units, > + # so use an awk script to round this number up to the nearest 1k, just > + # like repquota does. Yeah, it's better to have a comment to explain why we need a "+1" at here. The V2 looks good to me too. > $XFS_IO_PROG -c stat $testfile > $tmp.out > cat $tmp.out >> $seqres.full > - local stat_blocks=$(grep 'stat.blocks' $tmp.out | awk '{print $3 / 2}') > + local stat_blocks=$(grep 'stat.blocks' $tmp.out | \ > + awk '{printf("%d\n", ($3 + 1) / 2);}') > > _report_quota_blocks $SCRATCH_MNT > $tmp.out > cat $tmp.out >> $seqres.full >