Files
apfstests/112
T
Eric Sandeen aa31b54565 Allow fsx tests to run on generic filesystems
There is already logic in 075 to gracefully skip nfs for fsx
invocations with -x (xfs-specific preallocation) - just extend
this to any non-xfs filesystem, and add to test 112 as well.

Later we can change this behavior to use fallocate and include
more filesystems but this gets some fsx coverage for now.

Test 127 doesn't seem to have anything xfs-specific, so mark
that as generic too.

Signed-off-by: Eric Sandeen <sandeen@redhat.com>
Reviewed-by: Christoph Hellwig <hch@lst.de>
2009-06-08 11:27:23 -05:00

166 lines
3.8 KiB
Bash
Executable File

#! /bin/sh
# FS QA Test No. 112
#
# fsx (AIO variant, based on 075)
#
#-----------------------------------------------------------------------
# Copyright (c) 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
owner=nathans@sgi.com
seq=`basename $0`
echo "QA output created by $seq"
here=`pwd`
tmp=/tmp/$$
status=0 # success is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15
_cleanup()
{
cd /
rm -rf $testdir/fsx.* $tmp.*
_cleanup_testdir
}
# get standard environment, filters and checks
. ./common.rc
. ./common.filter
_do_test()
{
_n="$1"
_param="$2"
out=$testdir/fsx
rm -rf $out
if ! mkdir $out
then
echo " failed to mkdir $out"
status=1
exit
fi
_filter_param=`echo "$_param" | sed\
-e 's/-N [0-9][0-9]*/-N numops/' \
-e 's/-l [0-9][0-9]*/-l filelen/'`
echo ""
echo "-----------------------------------------------"
echo "fsx.$_n : $_filter_param"
echo "-----------------------------------------------"
if [ "$FSTYP" != "xfs" ]
then
if [ "$_n" = "1" -o "$_n" = "3" ]
then
# HACK: only xfs handles preallocation (-x) so just skip this test
return
fi
fi
# This cd and use of -P gets full debug on $here (not TEST_DEV)
cd $out
if ! $here/ltp/fsx $_param -P $here $seq.$_n >/dev/null
then
echo " fsx ($_param) returned $? - see $seq.$_n.full"
mv $seq.$_n.fsxlog $here/$seq.$_n.full
status=1
exit
fi
cd $here
_check_test_fs
}
_usage()
{
echo "$0: [-l filelen] [-n numops1] [-N numops2]"
}
_process_args()
{
while getopts "l:n:N:?" c $@
do
case $c
in
l)
filelen=$OPTARG
param_type="$param_type, overidde -l"
;;
N)
numops2=$OPTARG
param_type="$param_type, overidde -N"
;;
n)
numops1=$OPTARG
param_type="$param_type, overidde -n"
;;
?)
_usage
exit
;;
esac
done
}
# real QA test starts here
_supported_fs generic
_supported_os Linux
[ -x $here/ltp/aio-stress ] || \
_notrun "fsx not built with AIO for this platform"
size10=`expr 10 \* 1024 \* 1024` # 10 megabytes
filelen=$size10
numops1=1000
numops2=10000
# can override the params here
_process_args "$@"
echo "Params are for $param_type" >>$seq.full
echo "Params: n = $numops1 N = $numops2 l = $filelen" >>$seq.full
_setup_testdir
rm -f $here/$seq.full
echo "brevity is wit..."
_check_test_fs
# Options:
# -d: debug output for all operations
# -l flen: the upper bound on file size (default 262144)
# -o oplen: the upper bound on operation size
# -N numops: total # operations to do (default infinity)
# -P: save .fsxlog and .fsxgood files in dirpath (default ./)
# -S seed: for random # generator (default 1) 0 gets timestamp
# -x: pre-allocate file space, exercising unwritten extents
# -A: use the AIO system calls
_do_test 0 "-A -d -N $numops1 -S 0"
_do_test 1 "-A -d -N $numops1 -S 0 -x"
_do_test 2 "-A -d -N $numops2 -l $filelen -S 0"
_do_test 3 "-A -d -N $numops2 -l $filelen -S 0 -x"
rm -f $seq.*.fsx{good,log}
exit 0