#! /bin/bash
# FSQA Test No. 176
#
# Check if resvsp on file create effects bmap output after hole punch.
# 967674: hole not show when file is created with resvsp
#-----------------------------------------------------------------------
# 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
#
#-----------------------------------------------------------------------
#
owner=ddiss@sgi.com

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

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

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

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

# real QA test starts here
_supported_fs xfs
_supported_os Linux

_require_scratch

# test that we have DMAPI support
_dmapi_scratch_mount
umount $SCRATCH_MNT > /dev/null 2>&1

# _test_punch args: blksize extsize_hint filesize "pp1 pp2 pp3" \
# 					"ps1 ps2 ps3" "pt1 pt2 pt3" "wp1 wp2" "ws1 ws2" \
#					"w p p w p" resvsp

echo "-- test dmpunch-hole with resvsp on file create --"
_test_punch 4096 0 256 "240" "16" "d" "0" "256" "w p"

echo
echo "-- this time dont use resvsp --"
_test_punch 4096 0 256 "240" "16" "d" "0" "256" "w p" noresv

echo
echo
echo "-- test unresvsp hole punch with resvsp on file create --"
_test_punch 4096 0 256 "240" "16" "u" "0" "256" "w p"

echo
echo "-- this time dont use resvsp --"
_test_punch 4096 0 256 "240" "16" "u" "0" "256" "w p" noresv

status=0
exit
