Files
apfstests/tests/xfs/163
T
Gao Xiang ebc1ee176d xfs: basic functionality test for shrinking free space in the last AG
Add basic test to make sure the functionality works as expected.

Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Gao Xiang <hsiangkao@redhat.com>
Signed-off-by: Eryu Guan <guaneryu@gmail.com>
2021-05-16 23:16:44 +08:00

74 lines
1.8 KiB
Bash
Executable File

#! /bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright (c) 2021 Red Hat, Inc. All Rights Reserved.
#
# FS QA Test No. 163
#
# XFS shrinkfs basic functionality test
#
# This test attempts to shrink with a small size (512K), half AG size and
# an out-of-bound size (agsize + 1) to observe if it works as expected.
#
seq=`basename $0`
seqres=$RESULT_DIR/$seq
echo "QA output created by $seq"
here=`pwd`
tmp=/tmp/$$
status=1 # failure is the default!
trap "rm -f $tmp.*; exit \$status" 0 1 2 3 15
# get standard environment, filters and checks
. ./common/rc
. ./common/filter
test_shrink()
{
$XFS_GROWFS_PROG -D"$1" $SCRATCH_MNT >> $seqres.full 2>&1
ret=$?
_scratch_unmount
_check_scratch_fs
_scratch_mount
$XFS_INFO_PROG $SCRATCH_MNT 2>&1 | _filter_mkfs 2>$tmp.growfs >/dev/null
. $tmp.growfs
[ $ret -eq 0 -a $1 -eq $dblocks ]
}
# real QA test starts here
_supported_fs xfs
_require_scratch_xfs_shrink
rm -f $seqres.full
echo "Format and mount"
# agcount = 1 is forbidden on purpose, and need to ensure shrinking to
# 2 AGs isn't feasible yet. So agcount = 3 is the minimum number now.
_scratch_mkfs -dsize="$((512 * 1024 * 1024))" -dagcount=3 2>&1 | \
tee -a $seqres.full | _filter_mkfs 2>$tmp.mkfs >/dev/null
. $tmp.mkfs
t_dblocks=$dblocks
_scratch_mount >> $seqres.full
echo "Shrink fs (small size)"
test_shrink $((t_dblocks-512*1024/dbsize)) || \
echo "Shrink fs (small size) failure"
echo "Shrink fs (half AG)"
test_shrink $((t_dblocks-agsize/2)) || \
echo "Shrink fs (half AG) failure"
echo "Shrink fs (out-of-bound)"
test_shrink $((t_dblocks-agsize-1)) && \
echo "Shrink fs (out-of-bound) failure"
[ $dblocks -ne $((t_dblocks-agsize/2)) ] && \
echo "dblocks changed after shrinking failure"
$XFS_INFO_PROG $SCRATCH_MNT >> $seqres.full
echo "*** done"
# success, all done
status=0
exit