xfs/530: skip test if user MKFS_OPTIONS screw up formatting
[xfstests-dev.git] / tests / xfs / 530
index 65c17af..9c6f44d 100755 (executable)
@@ -7,15 +7,10 @@
 # Verify that XFS does not cause bitmap/summary inode fork's extent count to
 # overflow when growing an the realtime volume of the filesystem.
 #
-seq=`basename $0`
-seqres=$RESULT_DIR/$seq
-echo "QA output created by $seq"
-
-here=`pwd`
-tmp=/tmp/$$
-status=1       # failure is the default!
-trap "_cleanup; exit \$status" 0 1 2 3 15
+. ./common/preamble
+_begin_fstest auto quick realtime growfs
 
+# Override the default cleanup function.
 _cleanup()
 {
        cd /
@@ -24,15 +19,11 @@ _cleanup()
        rm -f $tmp.* $TEST_DIR/$seq.rtvol
 }
 
-# get standard environment, filters and checks
-. ./common/rc
+# Import common functions.
 . ./common/filter
 . ./common/inject
 . ./common/populate
 
-# remove previous $seqres.full before test
-rm -f $seqres.full
-
 # real QA test starts here
 
 _supported_fs xfs
@@ -69,10 +60,22 @@ echo "Format and mount rt volume"
 
 export USE_EXTERNAL=yes
 export SCRATCH_RTDEV=$rtdev
-_scratch_mkfs -d size=$((1024 * 1024 * 1024)) -b size=${dbsize} \
+_scratch_mkfs -d size=$((1024 * 1024 * 1024)) \
              -r size=${rtextsz},extsize=${rtextsz} >> $seqres.full
 _try_scratch_mount || _notrun "Couldn't mount fs with synthetic rt volume"
 
+# If we didn't get the desired realtime volume and the same blocksize as the
+# first format (which we used to compute a specific rt geometry), skip the
+# test.  This can happen if the MKFS_OPTIONS conflict with the ones we passed
+# to _scratch_mkfs or do not result in a valid rt fs geometry.  In this case,
+# _scratch_mkfs will try to "succeed" at formatting by dropping MKFS_OPTIONS,
+# giving us the wrong geometry.
+formatted_blksz="$(_get_block_size $SCRATCH_MNT)"
+test "$formatted_blksz" -ne "$dbsize" && \
+       _notrun "Tried to format with $dbsize blocksize, got $formatted_blksz."
+$XFS_INFO_PROG $SCRATCH_MNT | egrep -q 'realtime.*blocks=0' && \
+       _notrun "Filesystem should have a realtime volume"
+
 echo "Consume free space"
 fillerdir=$SCRATCH_MNT/fillerdir
 nr_free_blks=$(stat -f -c '%f' $SCRATCH_MNT)
@@ -114,7 +117,7 @@ for rtino in rbmino rsumino; do
 done
 
 echo "Check filesystem"
-_check_xfs_filesystem $SCRATCH_DEV none $rtdev
+_check_scratch_fs
 
 losetup -d $rtdev
 rm -f $TEST_DIR/$seq.rtvol