On 3/20/13 5:50 AM, Jan Kara wrote: > Test 289 ignored the fact that historically journal is not accounted as > fs overhead in ext3. For larger filesystems it is hidden in 1% tolerance > but for filesystems smaller than 12G the test fails. So make the > counting precise to work everywhere. > > CC: Eric Sandeen <sandeen@xxxxxxxxxxx> > Signed-off-by: Jan Kara <jack@xxxxxxx> Looks fine, thanks. Reviewed-by: Eric Sandeen <sandeen@xxxxxxxxxx> p.s. - sorry, didn't catch this the first time: _filter_size_to_bytes won't work for lowercase units, which might be nice. How about: > + case $suffix in > + k|K) mul=1024 ;; > + m|M) mul=$((1024*1024)) ;; > + g|G) mul=$((1024*1024*1024)) ;; > + t|T) mul=$((1024*1024*1024*1024)) ;; > + esac SGI guys - maybe could do that as a small fix-up on commit. Otherwise, if anyone ever needs lower case they could just add it at the same time, so no big deal. -Eric > --- > 289 | 16 ++++++++++++---- > common.filter | 15 +++++++++++++++ > 2 files changed, 27 insertions(+), 4 deletions(-) > > diff --git a/289 b/289 > index b057c20..eb5c63b 100755 > --- a/289 > +++ b/289 > @@ -59,10 +59,18 @@ TOTAL_BLOCKS=`dumpe2fs -h $SCRATCH_DEV 2>/dev/null \ > FREE_BLOCKS=`dumpe2fs -h $SCRATCH_DEV 2>/dev/null \ > | awk '/Free blocks:/{print $3}'` > > -# nb: kernels today don't count journal blocks as overhead, but should. > -# For most filesystems this will still be within tolerance. > -# Overhead is all the blocks (already) used by the fs itself: > -OVERHEAD=$(($TOTAL_BLOCKS-$FREE_BLOCKS)) > +# ext3 doesn't count journal blocks as overhead, ext4 does. > +if [ $FSTYP = "ext3" ]; then > + JOURNAL_SIZE=`dumpe2fs -h $SCRATCH_DEV 2>/dev/null \ > + | awk '/Journal size:/{print $3}' | _filter_size_to_bytes` > + BLOCK_SIZE=`dumpe2fs -h $SCRATCH_DEV 2>/dev/null \ > + | awk '/Block size:/{print $3}'` > + JOURNAL_BLOCKS=$(($JOURNAL_SIZE/$BLOCK_SIZE)) > +else > + JOURNAL_BLOCKS=0 > +fi > + > +OVERHEAD=$(($TOTAL_BLOCKS-$FREE_BLOCKS-$JOURNAL_BLOCKS)) > > # bsddf|minixdf > # Set the behaviour for the statfs system call. The minixdf > diff --git a/common.filter b/common.filter > index f0f6076..fcd7589 100644 > --- a/common.filter > +++ b/common.filter > @@ -229,5 +229,20 @@ _filter_spaces() > sed -e 's/ [ ]*/ /g' > } > > +# Convert string read from stdin like 128K to bytes and print it to stdout > +_filter_size_to_bytes() > +{ > + read size > + suffix=${size:${#size}-1} > + mul=1 > + case $suffix in > + K) mul=1024 ;; > + M) mul=$((1024*1024)) ;; > + G) mul=$((1024*1024*1024)) ;; > + T) mul=$((1024*1024*1024*1024)) ;; > + esac > + echo $((${size:0:${#size}-1}*$mul)) > +} > + > # make sure this script returns success > /bin/true > _______________________________________________ xfs mailing list xfs@xxxxxxxxxxx http://oss.sgi.com/mailman/listinfo/xfs