#! /bin/bash
# FSQA Test No. 169
#
# Test for file size consistency with append followed by umount/mount
#
#-----------------------------------------------------------------------
# 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.*
}

_show_wrote_and_stat_only()
{
	# filer out xfs_io bits we are interested in
	perl -ne '
		if (/^wrote/) { print } ;
		if (/^stat\.size/) { print } ;
	'
}

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

# real QA test starts here
_supported_fs generic
_supported_os Linux

_require_scratch

_scratch_mkfs >>$seqres.full 2>&1 \
	|| _fail "mkfs scratch failed"

_scratch_mount

echo "# creating new file for io"
touch $SCRATCH_MNT/testfile

echo "# appending 15k to new file, sync every 5k"
$XFS_IO_PROG -a -c "pwrite 0 5k" -c "fsync" \
	-c "pwrite 5k 5k" -c "fsync" \
	-c "pwrite 10k 5k" -c "fsync" -c "stat" \
	$SCRATCH_MNT/testfile \
	| _show_wrote_and_stat_only

echo "# remounting scratch"
_scratch_cycle_mount >>$seqres.full 2>&1 \
    || _fail "remount failed: $MOUNT_OPTIONS"

echo "# stating file to confirm correct size"
$XFS_IO_PROG -r -c "stat" $SCRATCH_MNT/testfile \
	| _show_wrote_and_stat_only

echo "# appending 10 bytes to new file, sync at 5 bytes"
$XFS_IO_PROG -f -c "pwrite 0 5" -c s -c "pwrite 5 5" \
	-c "stat" $SCRATCH_MNT/nextfile \
	| _show_wrote_and_stat_only

echo "# remounting scratch"
_scratch_cycle_mount >>$seqres.full 2>&1 \
    || _fail "remount failed: $MOUNT_OPTIONS"

echo "# stating file to confirm correct size"
$XFS_IO_PROG -r -c "stat" $SCRATCH_MNT/nextfile \
    | _show_wrote_and_stat_only

# success, all done
status=0
exit

