#! /bin/bash
# FS QA Test No. btrfs/024
#
# btrfs wrong compression type regression test. This test is used to check
# the oops will happen when the users write some data into the files whose
# compress flag is set but the compression of the fs is disabled.
#
#-----------------------------------------------------------------------
# Copyright (c) 2013 Fujitsu.  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!

_cleanup()
{
	rm -f $tmp.*
}

trap "_cleanup ; exit \$status" 0 1 2 3 15

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

# real QA test starts here
_supported_fs btrfs
_supported_os Linux
_require_scratch

__workout()
{
	work_file="$SCRATCH_MNT/tmpfile"

	touch $work_file
	$CHATTR_PROG =c $work_file
	$XFS_IO_PROG -f -c "pwrite 0 1M" -c "fsync" $work_file | _filter_xfs_io
}

echo "*** test nodatacow"
_scratch_mkfs > /dev/null 2>&1
_scratch_mount "-o nodatacow"
__workout
_scratch_unmount
_check_scratch_fs

echo "*** test compress=no"
_scratch_mkfs > /dev/null 2>&1
_scratch_mount "-o compress=no"
__workout
_scratch_unmount
_check_scratch_fs

echo "*** test compress-force=no"
_scratch_mkfs > /dev/null 2>&1
_scratch_mount "-o compress-force=no"
__workout
_scratch_unmount

echo "*** done"
status=0 ; exit
