#! /bin/bash
# FS QA Test No. 290
#
# Ensuring that copy on write in directio mode to the source file when the
# CoW range covers unwritten and regular shared blocks.
#   - Create two files.
#   - fallocate the first file.
#   - Write the odd blocks of the first file.
#   - Reflink the odd blocks of the first file into the second file.
#   - DIO CoW the first file across the halfway mark, starting with the
#     regular extent.
#   - Check that the files are now different where we say they're different.
#
#-----------------------------------------------------------------------
# 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 /
    rm -rf $tmp.*
}

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

# real QA test starts here
_supported_os Linux
_require_scratch_reflink
_require_xfs_io_command "falloc"
_require_odirect

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))
_sweave_reflink_unwritten $blksz $nr $testdir/file1 $testdir/file3 >> $seqres.full
_scratch_cycle_mount

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

echo "CoW across the transition"
cowoff=$((filesize / 4))
cowsz=$((filesize / 2))
$XFS_IO_PROG -d -f -c "pwrite -S 0x63 -b $cowsz $cowoff $cowsz" $testdir/file1 >> $seqres.full
_pwrite_byte 0x63 $cowoff $cowsz $testdir/file1.chk >> $seqres.full
_scratch_cycle_mount

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

# success, all done
status=0
exit
