#! /bin/bash
# FS QA Test No. 440
#
# Regression test for a quota accounting bug when changing the owner of
# a file that has CoW reservations and no dirty pages.  The reservations
# should shift over to the new owner, but they do not.
#
#-----------------------------------------------------------------------
# Copyright (c) 2018 Oracle, Inc.  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 -f $tmp.*
}

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

# Modify as appropriate.
_supported_fs xfs
_supported_os Linux

_require_quota
_require_scratch_reflink
_require_cp_reflink
_require_user

rm -f $seqres.full

echo "Format and mount"
_scratch_mkfs > "$seqres.full" 2>&1
_scratch_mount "-o usrquota,grpquota" >> "$seqres.full" 2>&1

echo "Create files"
$XFS_IO_PROG -c "cowextsize 1m" $SCRATCH_MNT
touch $SCRATCH_MNT/a $SCRATCH_MNT/force_fsgqa
chown $qa_user $SCRATCH_MNT/a $SCRATCH_MNT/force_fsgqa
_pwrite_byte 0x58 0 64k $SCRATCH_MNT/a >> $seqres.full
$XFS_IO_PROG -c 'stat -r' $SCRATCH_MNT/a | grep stat.size >> $seqres.full
_report_quota_blocks "-u $SCRATCH_MNT"

echo "Reflink and CoW"
_cp_reflink $SCRATCH_MNT/a $SCRATCH_MNT/b
_pwrite_byte 0x59 0 64k $SCRATCH_MNT/a >> $seqres.full
$XFS_IO_PROG -c 'stat -r' $SCRATCH_MNT/a | grep stat.size >> $seqres.full
_report_quota_blocks "-u $SCRATCH_MNT"

echo "Sync"
sync
_report_quota_blocks "-u $SCRATCH_MNT"

echo "Chown and check quota"
chown root $SCRATCH_MNT/a
$XFS_IO_PROG -c 'stat -r' $SCRATCH_MNT/a | grep stat.size >> $seqres.full
_report_quota_blocks "-u $SCRATCH_MNT"

echo "Remount"
_scratch_unmount
_scratch_mount "-o usrquota,grpquota" >> "$seqres.full" 2>&1
$XFS_IO_PROG -c 'stat -r' $SCRATCH_MNT/a | grep stat.size >> $seqres.full
_report_quota_blocks "-u $SCRATCH_MNT"

# success, all done
status=0
exit
