#! /bin/bash
# SPDX-License-Identifier: GPL-2.0+
# Copyright (c) 2019, Oracle and/or its affiliates.  All Rights Reserved.
#
# FS QA Test No. 543
#
# Ensuring that reflinking works when the source range covers multiple
# extents, some unwritten, some not:
#
#   - Create a file with the following repeating sequence of blocks:
#     1. reflinked
#     2. unwritten
#     3. hole
#     4. regular block
#     5. delalloc
#   - reflink across the halfway mark, starting with the unwritten extent.
#   - Check that the files are now different where we say they're different.
#
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 /
	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 generic
_require_scratch_reflink
_require_xfs_io_command "falloc"

rm -f $seqres.full

echo "Format and mount"
_scratch_mkfs > $seqres.full 2>&1
_scratch_mount >> $seqres.full 2>&1

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

echo "Create the original files"
blksz=65536
nr=64
filesize=$((blksz * nr))
_pwrite_byte 0x64 0 $((blksz * nr)) $testdir/file2 >> $seqres.full
_pwrite_byte 0x64 0 $((blksz * nr)) $testdir/file2.chk >> $seqres.full
_weave_reflink_rainbow $blksz $nr $testdir/file1 $testdir/file3 >> $seqres.full
_scratch_cycle_mount

echo "Compare files"
md5sum $testdir/file1 | _filter_scratch
md5sum $testdir/file2 | _filter_scratch
md5sum $testdir/file2.chk | _filter_scratch
md5sum $testdir/file3 | _filter_scratch
md5sum $testdir/file3.chk | _filter_scratch

echo "reflink across the transition"
soff=$((filesize / 4))
doff=$((filesize / 2))
rsz=$((filesize / 2))
_weave_reflink_rainbow_delalloc $blksz $nr $testdir/file3 >> $seqres.full

# now reflink the rainbow
echo "before reflink" >> $seqres.full
$FILEFRAG_PROG -v $testdir/file2 >> $seqres.full
$FILEFRAG_PROG -v $testdir/file3 >> $seqres.full
$XFS_IO_PROG -f -c "reflink $testdir/file3 $soff $doff $rsz" $testdir/file2 >> $seqres.full
$XFS_IO_PROG -c "truncate $doff" $testdir/file2.chk
dd if=$testdir/file3.chk skip=$((soff / blksz)) count=$((rsz / blksz)) bs=$blksz >> $testdir/file2.chk 2> /dev/null
_scratch_cycle_mount

echo "Compare files"
echo "after reflink" >> $seqres.full
$FILEFRAG_PROG -v $testdir/file2 >> $seqres.full
$FILEFRAG_PROG -v $testdir/file3 >> $seqres.full
md5sum $testdir/file1 | _filter_scratch
md5sum $testdir/file2 | _filter_scratch
md5sum $testdir/file2.chk | _filter_scratch
md5sum $testdir/file3 | _filter_scratch
md5sum $testdir/file3.chk | _filter_scratch

# success, all done
status=0
exit
