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>
This commit is contained in:
Gao Xiang
2021-05-12 07:32:27 +08:00
committed by Eryu Guan
parent 8a44508c50
commit ebc1ee176d
3 changed files with 80 additions and 0 deletions
Executable
+73
View File
@@ -0,0 +1,73 @@
#! /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
+6
View File
@@ -0,0 +1,6 @@
QA output created by 163
Format and mount
Shrink fs (small size)
Shrink fs (half AG)
Shrink fs (out-of-bound)
*** done
+1
View File
@@ -160,6 +160,7 @@
160 auto quick bigtime
161 auto quick bigtime quota
162 auto quick attr repair
163 auto quick growfs shrinkfs
164 rw pattern auto prealloc quick
165 rw pattern auto prealloc quick
166 rw metadata auto quick