#! /bin/bash
# FS QA Test No. 387
#
# Populate a XFS filesystem and fuzz every block-format dir block 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

# real QA test starts here
_supported_os Linux
_supported_fs xfs
_require_scratch_xfs_fuzz_fields

echo "Format and populate"
_scratch_populate_cached nofill > $seqres.full 2>&1

echo "Find data-format dir block"
_scratch_mount
inum=$(stat -c '%i' $SCRATCH_MNT/S_IFDIR.FMT_BLOCK)
_scratch_unmount

echo "Fuzz data-format dir block"
_scratch_xfs_fuzz_metadata '' 'online'  "inode ${inum}" 'dblock 0' >> $seqres.full
echo "Done fuzzing data-format dir block"

# success, all done
status=0
exit
