From 3574531af49bdde338aff0131100852e87e9d0fd Mon Sep 17 00:00:00 2001 From: Jan Kara Date: Wed, 20 Mar 2013 10:50:48 +0000 Subject: [PATCH] xfstests: count journal size in test 289 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 Signed-off-by: Jan Kara Reviewed-by: Eric Sandeen [rjohnston@sgi.com: add lower case units to filter] Signed-off-by: Rich Johnston --- 289 | 16 ++++++++++++---- common.filter | 15 +++++++++++++++ 2 files changed, 27 insertions(+), 4 deletions(-) diff --git a/289 b/289 index b057c203..eb5c63b3 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 da5675f1..bdd64270 100644 --- a/common.filter +++ b/common.filter @@ -265,5 +265,20 @@ _filter_size() sed -e "s/[0-9\.]\+\s\?[b|k|m|g|t][b]\?//ig" } +# 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|K) mul=1024 ;; + m|M) mul=$((1024*1024)) ;; + g|G) mul=$((1024*1024*1024)) ;; + t|T) mul=$((1024*1024*1024*1024)) ;; + esac + echo $((${size:0:${#size}-1}*$mul)) +} + # make sure this script returns success /bin/true -- 2.39.5