#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2000-2002 Silicon Graphics, Inc.  All Rights Reserved.
#
# FS QA Test No. 041
#
# growfs QA tests - repeatedly fill/grow the filesystem
# check the filesystem contents after each operation
#
set +x

seq=`basename $0`
seqres=$RESULT_DIR/$seq
echo "QA output created by $seq"

here=`pwd`
tmp=/tmp/$$
status=1	# failure is the default!

_cleanup()
{
    cd /
    _scratch_unmount
    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 xfs

_require_scratch
_require_no_large_scratch_dev
_scratch_unmount 2>/dev/null

_fill()
{
    if [ $# -ne 1 ]; then echo "Usage: _fill \"path\"" 1>&2 ; exit 1; fi
    _do "Fill filesystem" \
	"$here/src/fill2fs --verbose --dir=$1 --seed=0 --filesize=65536 --stddev=32768 --list=- >>$tmp.manifest"
}

_do_die_on_error=message_only
rm -f $seqres.full
agsize=32
echo -n "Make $agsize megabyte filesystem on SCRATCH_DEV and mount... "
_scratch_mkfs_xfs -dsize=${agsize}m,agcount=1 2>&1 >/dev/null || _fail "mkfs failed"
bsize=`_scratch_mkfs_xfs -dsize=${agsize}m,agcount=1 2>&1 | _filter_mkfs 2>&1 \
		| perl -ne 'if (/dbsize=(\d+)/) {print $1;}'`
onemeginblocks=`expr 1048576 / $bsize`
_scratch_mount

echo "done"

# full allocation group -> partial; partial -> expand partial + new partial;
# partial -> expand partial; partial -> full
# cycle through 33m -> 67m -> 75m -> 96m
for size in 33 67 75 96
do
    grow_size=`expr $size \* $onemeginblocks`
    _fill $SCRATCH_MNT/fill_$size
    _do "Grow filesystem to ${size}m" "xfs_growfs -D $grow_size $SCRATCH_MNT"
    echo -n "Flush filesystem... "
    _do "_scratch_unmount"
    _do "_try_scratch_mount"
    echo "done"
    echo -n "Check files... "
    if ! _do "$here/src/fill2fs_check $tmp.manifest"; then
      echo "fail (see $seqres.full)"
      _do "cat $tmp.manifest"
      _do "ls -altrR $SCRATCH_MNT"
      _do "dd if=$SCRATCH_DEV bs=4096 count=$grow_size | gzip -9 > $seq.fsimage.gz"
      status=1 ; exit
    fi
    echo "done"
done

# success, all done
echo "Growfs tests passed."
status=0 ; exit
