#! /bin/bash
# FS QA Test No. 309
#
# Ensure that we can create enough distinct reflink entries to force creation
# of a multi-level refcount btree by reflinking a file a number of times and
# truncating the copies at successively lower sizes.  Delete and recreate a few
# times to exercise the refcount btree grow/shrink functions.
#
#-----------------------------------------------------------------------
# Copyright (c) 2016, Oracle and/or its affiliates.  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/$$
status=1    # failure is the default!
trap "_cleanup; exit \$status" 0 1 2 3 15

_cleanup()
{
	cd /
	_scratch_unmount > /dev/null 2>&1
	rm -rf $tmp.*
}

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

# real QA test starts here
_supported_os Linux
_supported_fs xfs
_require_scratch_reflink
_require_cp_reflink

rm -f $seqres.full

_scratch_mkfs >/dev/null 2>&1
_scratch_mount

testdir=$SCRATCH_MNT/test-$seq
mkdir $testdir

echo "Create the original file blocks"
blksz="$(_get_block_size $testdir)"
nr_blks=$((2 * blksz / 12))

for i in 1 2 x; do
	_pwrite_byte 0x61 0 $((blksz * nr_blks)) $testdir/file1 >> $seqres.full

	echo "$i: Reflink a bunch of times"
	seq 1 $nr_blks | while read nr; do
		_cp_reflink $testdir/file1 $testdir/file1.$nr >> $seqres.full
	done
	sync

	echo "$i: Truncate files"
	seq 1 $nr_blks | while read nr; do
		truncate -s $((blksz * (nr_blks - nr))) $testdir/file1.$nr >> $seqres.full
	done

	_scratch_unmount
	_check_scratch_fs
	_scratch_mount

	test $i = "x" && break

	echo "$i: Delete both files"
	rm -rf $testdir
	mkdir -p $testdir
	_scratch_unmount
	_check_scratch_fs
	_scratch_mount
done

# success, all done
status=0
exit
