#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2016, Oracle and/or its affiliates.  All Rights Reserved.
#
# 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.
#
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_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
