--- /dev/null
+#! /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 version 2 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/
+#-----------------------------------------------------------------------
+#
+# 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 "-----------------------------------------------"
+
+ # 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 xfs
+_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