xfs/004: account for XFS reservations changes in 4.10-rc
[xfstests-dev.git] / tests / xfs / 004
index 09da2fea8a254c1c473b830bfe6c8be9b60b180f..bbc1aee31e0109d29165a06a8f9fb36d9c7abbce 100755 (executable)
@@ -83,29 +83,18 @@ 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.
+#  - starting with Linux 4.10-rc the bmbt split reservation moved to be per-AG
 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 + ('$agcount') * '$dbsize' * 8) {
+               $answer = "yes";
+       } elsif ($freesp == $avail + (('$agcount' + 1) * '$dbsize' * 4)) {
                $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