#! /bin/bash
# FS QA Test No. 247
#
# Test for race between direct I/O and mmap
#
#-----------------------------------------------------------------------
# Copyright (c) 2010 Red Hat, 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=lmcilroy@redhat.com

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

here=`pwd`
tmp=/tmp/$$
status=1	# failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 7 15

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

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

# real QA test starts here

# Modify as appropriate.
_supported_fs generic
_supported_os Linux

testfile=$TEST_DIR/$seq.$$

loops=500
iosize=1048576

# Initialise file
dd if=/dev/zero of=$testfile bs=$iosize count=$loops &> /dev/null
[ $? -ne 0 ] && exit
sync
	
# Direct I/O overwriter
dd if=/dev/zero of=$testfile oflag=direct bs=$iosize count=$loops conv=notrunc &> /dev/null &
[ $? -ne 0 ] && exit

# Mmap writer
start=`expr $loops - 1`
for i in `seq $start -1 0`
do
	offset=`expr $i \* $iosize`
	$XFS_IO_PROG -F -f -c "mmap -w $offset $iosize" -c "mwrite $offset $iosize" $testfile
	[ $? -ne 0 ] && exit
done

wait

echo "Silence is golden."

# success, all done
status=0
exit
