-#! /bin/sh
+#! /bin/bash
# FSQA Test No. 068
#
# Test case to reproduce xfs_freeze hang under filsystem load.
# The fail case for this test is a hang on an xfs_freeze.
#
#-----------------------------------------------------------------------
-# Copyright (c) 2000-2005 Silicon Graphics, Inc. All Rights Reserved.
+# Copyright (c) 2000-2005 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. 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
. ./common.filter
# real QA test starts here
-_supported_fs xfs
+_supported_fs generic
_supported_os Linux IRIX
_require_scratch
+_require_freeze
echo "*** init FS"
umount $SCRATCH_DEV >/dev/null 2>&1
echo "*** MKFS ***" >>$seq.full
echo "" >>$seq.full
-_scratch_mkfs_xfs >>$seq.full 2>&1 \
+_scratch_mkfs >>$seq.full 2>&1 \
|| _fail "mkfs failed"
_scratch_mount >>$seq.full 2>&1 \
|| _fail "mount failed"
nops=200
while [ -f "$tmp.running" ]
do
- # -w ensures that the only ops are ones which cause write I/O
- $FSSTRESS_PROG -d $STRESS_DIR -w -p $procs -n $nops $FSSTRESS_AVOID \
+ # We do both read & write IO - not only is this more realistic,
+ # but it also potentially tests atime updates
+ $FSSTRESS_PROG -d $STRESS_DIR -p $procs -n $nops $FSSTRESS_AVOID \
> /dev/null 2>&1
done
rmdir $STRESS_DIR
} &
+# start fstest -m loop in a background block; this gets us mmap coverage
+{
+ FSTEST_DIR="$SCRATCH_MNT/fstest_test_dir"
+ mkdir "$FSTEST_DIR"
+
+ procs=2
+ while [ -f "$tmp.running" ]
+ do
+ src/fstest -m -p $FSTEST_DIR -n $procs -f 4 > /dev/null 2>&1
+ done
+
+ rm -rf $FSTEST_DIR/*
+ rmdir $FSTEST_DIR
+} &
+
i=0
let ITERATIONS=$ITERATIONS-1