#! /bin/bash
# FS QA Test No. 225
#
# Run the fiemap (file extent mapping) tester
#
#-----------------------------------------------------------------------
# Copyright (c) 2009 Eric Sandeen.  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=sandeen@sandeen.net

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 15

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

# 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 > /dev/null 2>&1
_scratch_mount > /dev/null 2>&1

rm -f $seq.full
fiemapfile=$SCRATCH_MNT/$seq.fiemap
fiemaplog=$SCRATCH_MNT/$seq.log


[ -x $here/src/fiemap-tester ] || _notrun "fiemap-tester not built"

seed=`date +%s`

echo "using seed $seed" >> $fiemaplog

echo "fiemap run without preallocation, with sync"
$here/src/fiemap-tester -q -S -s $seed -p 0 -r 200 $fiemapfile 2>&1 | tee -a $fiemaplog

if [ $? -ne 0 ]; then
	if grep -q "Operation not supported" $fiemaplog; then
	      _notrun "FIEMAP not supported by this filesystem type: $FSTYP"
	fi
	status=$?
	exit
fi

echo "fiemap run without preallocation or sync"
$here/src/fiemap-tester -q -s $seed -p 0 -r 200 $fiemapfile 2>&1 | tee -a $fiemaplog

status=0
exit
