xfstests: rename USE_BIG_LOOPFS to be more generic
[xfstests-dev.git] / 031
diff --git a/031 b/031
index 49b988ae2f47edabf8b193a42978e4aefd824cd1..fb6f15ba68d645b22bd2eb1e1cc3363fb322e772 100755 (executable)
--- a/031
+++ b/031
@@ -1,39 +1,24 @@
-#! /bin/sh
-# XFS QA Test No. 031
-# $Id: 1.1 $
+#! /bin/bash
+# FS QA Test No. 031
 #
 # exercise xfs_repair - ensure repeated use doesn't corrupt
 #
 #-----------------------------------------------------------------------
-# Copyright (c) 2000 Silicon Graphics, Inc.  All Rights Reserved.
-# 
-# This program is free software; you can redistribute it and/or modify it
-# under the terms of version 2 of the GNU General Public License as
+# Copyright (c) 2000-2002 Silicon Graphics, Inc.  All Rights Reserved.
+#
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License as
 # published by the Free Software Foundation.
-# 
-# This program is distributed in the hope that it would be useful, but
-# WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
-# 
-# Further, this software is distributed without any warranty that it is
-# free of the rightful claim of any third person regarding infringement
-# or the like.  Any license provided herein, whether implied or
-# otherwise, applies only to this software file.  Patent licenses, if
-# any, provided herein do not apply to combinations of this program with
-# other software, or any other product whatsoever.
-# 
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write the Free Software Foundation, Inc., 59
-# Temple Place - Suite 330, Boston MA 02111-1307, USA.
-# 
-# Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
-# Mountain View, CA  94043, or:
-# 
-# http://www.sgi.com 
-# 
-# For further information regarding this notice, see: 
-# 
-# http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
+#
+# This program is distributed in the hope that it would be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write the Free Software Foundation,
+# Inc.,  51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
+#
 #-----------------------------------------------------------------------
 #
 # creator
@@ -50,19 +35,30 @@ rm -f $seq.full
 
 # get standard environment, filters and checks
 . ./common.rc
+. ./common.repair
 . ./common.filter
 
+# link correct .out file
+_link_out_file $seq.out
+
 _check_repair()
 {
-       xfs_repair $SCRATCH_DEV >$tmp.0 2>&1
+       echo "Repairing, round 0" >> $seq.full
+       _scratch_xfs_repair 2>&1 | _filter_repair | tee -a $seq.full >$tmp.0
        for i in 1 2 3 4
        do
                echo "Repairing, iteration $i" | tee -a $seq.full
-               xfs_repair $SCRATCH_DEV 2>&1 | tee -a $seq.full >$tmp.$i
-               diff $tmp.0 $tmp.$i
+               _scratch_xfs_repair 2>&1 | _filter_repair >$tmp.$i
+               diff $tmp.0 $tmp.$i >> $seq.full
+               if [ $? -ne 0 ]; then
+                       echo "ERROR: repair round $i differs to round 0 (see $seq.full)" | tee -a $seq.full
+                       break
+               fi
                # echo all interesting stuff...
                perl -ne '
                        s/(rebuilding directory inode) (\d+)/\1 INO/g;
+                       s/internal log/<TYPEOF> log/g;
+                       s/external log on \S+/<TYPEOF> log/g;
                        /^\S+/ && print;
                ' $tmp.$i
        done
@@ -75,6 +71,9 @@ _create_proto()
        total=$1
        count=0
 
+       # take inode size into account for non-shortform directories...
+       [ $total -gt 0 ] && total=`expr $total \* $isize / 512`
+
        cat >$tmp.proto <<EOF
 DUMMY1
 0 0
@@ -86,7 +85,7 @@ EOF
 
        while [ $count -lt $total ]
        do
-               count=`expr $count + 1`
+               let count=$count+1
                cat >>$tmp.proto <<EOF
 ${count}_of_${total}_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ---755 3 1 /bin/true
 EOF
@@ -95,37 +94,31 @@ EOF
 }
 
 # real QA test starts here
-# 
-_require_scratch
+_supported_fs xfs
+_supported_os IRIX Linux
 
-MKFSV1="-p $tmp.proto -n version=1 $SCRATCH_DEV"
-MKFSV2="-p $tmp.proto -n version=2 $SCRATCH_DEV"
+_require_scratch
+_require_no_large_scratch_dev
 
 # sanity test - default + one root directory entry
+# Note: must do this proto/mkfs now for later inode size calcs
 _create_proto 0
-echo "=== version 1, one entry"
-mkfs_xfs $MKFSV1 | _filter_mkfs >/dev/null 2>&1
-_check_repair
-echo "=== version 2, one entry (shortform)"
-mkfs_xfs $MKFSV2 | _filter_mkfs >/dev/null 2>&1
+echo "=== one entry (shortform)"
+_scratch_mkfs_xfs -p $tmp.proto >$tmp.mkfs0 2>&1
+_filter_mkfs <$tmp.mkfs0 >/dev/null 2>$tmp.mkfs
+. $tmp.mkfs
 _check_repair
 
 # block-form root directory & repeat
 _create_proto 20
-echo "=== version 1, twenty entries"
-mkfs_xfs $MKFSV1 | _filter_mkfs >/dev/null 2>&1
-_check_repair
-echo "=== version 2, twenty entries (block form)"
-mkfs_xfs $MKFSV2 | _filter_mkfs >/dev/null 2>&1
+echo "=== twenty entries (block form)"
+_scratch_mkfs_xfs -p $tmp.proto | _filter_mkfs >/dev/null 2>&1
 _check_repair
 
 # leaf-form root directory & repeat
 _create_proto 1000
-echo "=== version 1, thousand entries"
-mkfs_xfs $MKFSV1 | _filter_mkfs >/dev/null 2>&1
-_check_repair
-echo "=== version 2, thousand entries (leaf form)"
-mkfs_xfs $MKFSV2 | _filter_mkfs >/dev/null 2>&1
+echo "=== thousand entries (leaf form)"
+_scratch_mkfs_xfs -p $tmp.proto | _filter_mkfs >/dev/null 2>&1
 _check_repair
 
 # success, all done