#! /bin/bash
# FS QA Test No. 428
#
# Populate a XFS filesystem and fuzz every group dquot field.
# Use xfs_scrub to fix the corruption.
#
#-----------------------------------------------------------------------
# Copyright (c) 2017 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-1303  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 7 15

_cleanup()
{
	cd /
	rm -rf $tmp.*
}

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

# real QA test starts here
_supported_os Linux
_supported_fs xfs
_require_scratch_xfs_fuzz_fields
_require_quota

echo "Format and populate"
_scratch_populate_cached nofill > $seqres.full 2>&1
echo "${MOUNT_OPTIONS}" | grep -q 'grpquota' || _notrun "group quota disabled"

echo "Fuzz group 0 dquot"
_scratch_xfs_fuzz_metadata '' 'online'  "dquot -g 0" >> $seqres.full
echo "Done fuzzing dquot"

# success, all done
status=0
exit
