xfs/004: relax freespace check
[xfstests-dev.git] / tests / xfs / 004
index 076fc4b800eea779a115225fb33b9d1fe3074d18..f27f4b79d321267e2a3700fe8edd2e36f42a5083 100755 (executable)
@@ -24,8 +24,6 @@
 
 seq=`basename $0`
 seqres=$RESULT_DIR/$seq
-seqres=$RESULT_DIR/$seq
-seqres=$RESULT_DIR/$seq
 echo "QA output created by $seq"
 
 here=`pwd`
@@ -34,7 +32,7 @@ status=0
 
 _cleanup()
 {
-       umount $SCRATCH_MNT
+       _scratch_unmount
        rm -f $tmp.*
        exit $status
 }
@@ -50,20 +48,18 @@ _populate_scratch()
        dd if=/dev/zero of=$SCRATCH_MNT/goo count=400 bs=4096 >/dev/null 2>&1 &
        dd if=/dev/zero of=$SCRATCH_MNT/moo count=800 bs=4096 >/dev/null 2>&1 &
        wait
-       umount $SCRATCH_MNT                     # flush everything
+       _scratch_unmount                        # flush everything
        _scratch_mount                          # and then remount
 }
 
-
 # get standard environment, filters and checks
-. ./common.rc
-. ./common.filter
+. ./common/rc
+. ./common/filter
 
 # real QA test starts here
 _supported_fs xfs
 _supported_os IRIX Linux
 
-_need_to_be_root
 _require_scratch
 _require_no_large_scratch_dev
 
@@ -78,7 +74,7 @@ eval `$DF_PROG $SCRATCH_MNT 2>&1 \
 echo "df gave: blocks=$blocks used=$used avail=$avail" >>$seqres.full
 echo "blocksize from mkfs is '$dbsize'" >>$seqres.full
 
-xfs_db -r -c "freesp -s" $SCRATCH_DEV >$tmp.xfs_db
+_scratch_xfs_db -r -c "freesp -s"  >$tmp.xfs_db
 echo "xfs_db for $SCRATCH_DEV" >>$seqres.full
 cat $tmp.xfs_db >>$seqres.full
 
@@ -87,29 +83,15 @@ eval `$XFS_IO_PROG -x -c resblks $SCRATCH_MNT 2>&1 \
 echo "resblks gave: resblks=$resblks" >>$seqres.full
 
 # check the 'blocks' field from freesp command is OK
-# since 2.6.18, df does not report the 4 blocks per AG that cannot
-# be allocated, hence we check for that exact mismatch.
-# since ~2.6.22, reserved blocks are used by default and df does
-# not report them, hence check for an exact mismatch.
 perl -ne '
-       BEGIN   { $avail ='$avail' * 512;
+       BEGIN   { $avail ='$avail' * 512 + ('$resblks' * '$dbsize');
                  $answer="(no xfs_db free blocks line?)" }
        /free blocks (\d+)$/    || next;
        $freesp = $1 * '$dbsize';
-       if ($freesp == $avail) {
+       if ($freesp >= $avail) {
                $answer = "yes";
        } else {
-               $avail = $avail + (('$agcount' + 1) * '$dbsize' * 4);
-               if ($freesp == $avail) {
-                       $answer = "yes";
-               } else {
-                       $avail = $avail + ('$resblks' * '$dbsize');
-                       if ($freesp == $avail) {
-                               $answer = "yes";
-                       } else {
-                               $answer = "no ($freesp != $avail)";
-                       }
-               }
+               $answer = "no ($freesp < $avail)";
        }
        END     { print "$answer\n" }
        ' <$tmp.xfs_db >$tmp.ans