#! /bin/bash
# FSQA Test No. 172
#
# Check the filestreams allocator is doing its job.
# Multi-file data streams should always write into seperate AGs.
#
#-----------------------------------------------------------------------
# Copyright (c) 2007 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
#
#-----------------------------------------------------------------------
#

seq=`basename $0`
seqres=$RESULT_DIR/$seq
echo "QA output created by $seq"

here=`pwd`
tmp=/tmp/$$
rm -f $seqres.full
status=1    # failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15

_cleanup()
{
	cd /
	rm -f $tmp.*
}

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

# real QA test starts here
_supported_fs xfs
_supported_os Linux

_require_scratch

_check_filestreams_support || _notrun "filestreams not available"

# test reaper works by setting timeout low. Expected to fail
# for buffered, succeed for direct I/O.
_set_stream_timeout_centisecs 50

_test_streams 8 16 4 8 3 1 0 fail
_test_streams 64 16 20 10 1 0 1

status=0
exit

