#! /bin/bash
# FS QA Test No. 091
#
# fsx exercising direct IO -- sub-block sizes and concurrent buffered IO
#
#-----------------------------------------------------------------------
# Copyright (c) 2000-2004 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=1	# failure is the default!
trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15

# get standard environment, filters and checks
. ./common.rc
. ./common.filter

# real QA test starts here
_supported_fs generic
_supported_os Linux

rm -f $seq.full

run_fsx()
{
	echo fsx $@ | tee -a $seq.full
	args=`echo $@ | sed -e "s/ BSIZE / $bsize /g" -e "s/ PSIZE / $psize /g"`
	rm -f $TEST_DIR/junk
	$here/ltp/fsx $args $TEST_DIR/junk >>$seq.full 2>&1
	if [ $? -ne 0 ]; then
		cat $seq.full
		exit 1
	fi
}

psize=`$here/src/feature -s`
bsize=`blockdev --getss $TEST_DEV`
kernel=`uname -r  | sed -e 's/\(2\..\).*/\1/'`

# 2.4 Linux kernels support bsize aligned direct I/O only
[ "$HOSTOS" = "Linux" -a "$kernel" = "2.4" ] && bsize=$psize

# fsx usage:
# 
# -N numops: total # operations to do 
# -l flen: the upper bound on file size 
# -o oplen: the upper bound on operation size (64k default)
# -r readbdy: $psize would make reads page aligned (on i386)
# -t truncbdy: $psize would make truncates page aligned (on i386)
# -w writebdy: $psize would make writes page aligned (on i386)
# 
# -Z: O_DIRECT (use -R, -W, -r and -w too)
# -R: mapped read operations DISabled
# -W: mapped write operations DISabled

#run_fsx -N 10000            -l 500000 -r $psize -t $psize -w $psize -Z -R -W
 run_fsx -N 10000            -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
 run_fsx -N 10000  -o 8192   -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
#run_fsx -N 10000  -o 16384  -l 500000 -r PSIZE -t PSIZE -w PSIZE -Z -R -W
 run_fsx -N 10000  -o 32768  -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
#run_fsx -N 10000  -o 128000 -l 500000 -r PSIZE -t PSIZE -w PSIZE -Z -R -W
 run_fsx -N 10000  -o 8192   -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
#run_fsx -N 10000  -o 16384  -l 500000 -r PSIZE -t PSIZE -w PSIZE -Z -R -W
 run_fsx -N 10000  -o 32768  -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -R -W
#run_fsx -N 10000  -o 128000 -l 500000 -r PSIZE -t PSIZE -w PSIZE -Z -W
 run_fsx -N 10000  -o 128000 -l 500000 -r PSIZE -t BSIZE -w BSIZE -Z -W

status=0
exit
