#! /bin/bash
# FS QA Test No. btrfs/148
#
# Test that direct IO writes work on RAID5 and RAID6 filesystems.
#
#-----------------------------------------------------------------------
#
# Copyright (C) 2017 SUSE Linux Products GmbH. All Rights Reserved.
# Author: Filipe Manana <fdmanana@suse.com>
#
# 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"

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/filter

# real QA test starts here
_supported_fs btrfs
_supported_os Linux
_require_scratch
_require_scratch_dev_pool 4
_require_odirect

_scratch_dev_pool_get 4

rm -f $seqres.full

test_direct_io_write()
{
	local mkfs_options=$1

	_scratch_pool_mkfs $mkfs_options >>$seqres.full 2>&1
	_scratch_mount

	$XFS_IO_PROG -f -d -c "pwrite -S 0xab 0 1M" $SCRATCH_MNT/foo \
		| _filter_xfs_io

	# Now read back the same data, we expect to get what we wrote before.
	echo "File data after direct IO write:"
	od -t x1 $SCRATCH_MNT/foo | _filter_scratch
	_scratch_cycle_mount
	echo "File data after umounting and mounting again the filesystem:"
	od -t x1 $SCRATCH_MNT/foo | _filter_scratch

	$BTRFS_UTIL_PROG scrub start -B $SCRATCH_MNT >>$seqres.full 2>&1
	if [ $? -ne 0 ]; then
		echo "Scrub found errors" | tee -a $seqres.full
	fi

	_scratch_unmount
}

echo "Testing RAID5..."
test_direct_io_write "-m raid5 -d raid5"
echo "Testing RAID6..."
test_direct_io_write "-m raid6 -d raid6"

status=0
exit
