#! /bin/bash
# FS QA Test No. 336
#
# Exercise metadump on realtime rmapbt preservation.
#
#-----------------------------------------------------------------------
# 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".* $metadump_file
}

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

# real QA test starts here
_supported_os Linux
_supported_fs xfs
_require_realtime
_require_xfs_scratch_rmapbt
_require_test_program "punch-alternating"
_require_xfs_io_command "falloc"

rm -f "$seqres.full"

echo "Format and mount"
_scratch_mkfs | _filter_mkfs 2>$tmp.mkfs >/dev/null
. $tmp.mkfs
cat $tmp.mkfs > "$seqres.full" 2>&1
_scratch_mount
blksz="$(_get_block_size $SCRATCH_MNT)"

metadump_file=$TEST_DIR/${seq}_metadump
rm -rf $metadump_file

echo "Create a three-level rtrmapbt"
# inode core size is at least 176 bytes; btree header is 56 bytes;
# rtrmap record is 32 bytes; and rtrmap key/pointer are 56 bytes.
i_ptrs=$(( (isize - 176) / 56 ))
bt_ptrs=$(( (blksz - 56) / 56 ))
bt_recs=$(( (blksz - 56) / 32 ))

blocks=$((i_ptrs * bt_ptrs * bt_recs))
_require_fs_space $SCRATCH_MNT $(( (2 * blocks * blksz) * 5 / 4096 ))
len=$((blocks * rtextsz))

echo "Create big file"
$XFS_IO_PROG -f -R -c "falloc 0 $len" -c "pwrite -S 0x68 -b 1048576 0 $len" $SCRATCH_MNT/f1 >> $seqres.full
$XFS_IO_PROG -f -R -c "falloc 0 $len" -c "pwrite -S 0x68 -b 1048576 0 $len" $SCRATCH_MNT/f2 >> $seqres.full

echo "Explode the rtrmapbt"
./src/punch-alternating $SCRATCH_MNT/f1 >> "$seqres.full"
./src/punch-alternating $SCRATCH_MNT/f2 >> "$seqres.full"
_scratch_cycle_mount

echo "Create metadump file"
_scratch_unmount
_scratch_metadump $metadump_file

# Now restore the obfuscated one back and take a look around
echo "Restore metadump"
xfs_mdrestore $metadump_file $TEST_DIR/image
SCRATCH_DEV=$TEST_DIR/image _scratch_mount
SCRATCH_DEV=$TEST_DIR/image _scratch_unmount

echo "Check restored fs"
_check_scratch_fs $TEST_DIR/image

# success, all done
status=0
exit
