Thread (12 messages) 12 messages, 3 authors, 2021-03-12

Re: [RFC PATCH v2 2/3] xfs: basic functionality test for shrinking free space in the last AG

From: Gao Xiang <hidden>
Date: 2021-03-12 16:05:36
Also in: fstests

On Fri, Mar 12, 2021 at 11:56:13PM +0800, Zorro Lang wrote:
On Fri, Mar 12, 2021 at 09:22:59PM +0800, Gao Xiang wrote:
quoted
Add basic test to make sure the functionality works as expected.

Signed-off-by: Gao Xiang <redacted>
---
 tests/xfs/990     | 59 +++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/990.out | 12 ++++++++++
 tests/xfs/group   |  1 +
 3 files changed, 72 insertions(+)
 create mode 100755 tests/xfs/990
 create mode 100644 tests/xfs/990.out
diff --git a/tests/xfs/990 b/tests/xfs/990
new file mode 100755
index 00000000..551c4784
--- /dev/null
+++ b/tests/xfs/990
@@ -0,0 +1,59 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2021 Red Hat, Inc.  All Rights Reserved.
+#
+# FS QA Test 990
+#
+# 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
+
+# real QA test starts here
+_supported_fs xfs
_require_scratch
Will fix.
quoted
+_require_xfs_shrink
+
+rm -f $seqres.full
+echo "Format and mount"
+size="$((512 * 1024 * 1024))"
Is the fixed size necessary? Is that better to let testers run this test with
their different device/XFS geometry.
I'm fine with either way since it's a simple functionality test, yet for most
common cases, stratch devices are somewhat large. I tend to use a relative
controllable small value.

Actually, this case was from xfs/127 with some modification.
quoted
+_scratch_mkfs -dsize=$size -dagcount=3 2>&1 | \
+	tee -a $seqres.full | _filter_mkfs 2>$tmp.mkfs
+. $tmp.mkfs
+_scratch_mount >> $seqres.full 2>&1
+
+echo "Shrink fs (small size)"
+$XFS_GROWFS_PROG -D $((dblocks-512*1024/dbsize)) $SCRATCH_MNT \
+	>> $seqres.full 2>&1 || echo failure
+_scratch_cycle_mount
I don't understand the XFS Shrink new feature that much, is the "cycle_mount"
necessary? If it's not, can we get more chances to find bugs without
"cycle_mount", or with a fsck?
maybe it's useful to test unmount here. Yeah, I think it's better to try fsck
here. Good idea.
Another question is, should we verify the new size after shrink?
Yeah, will add xfs_info.
quoted
+
+echo "Shrink fs (half AG)"
+$XFS_GROWFS_PROG -D $((dblocks-agsize/2)) $SCRATCH_MNT \
+	>> $seqres.full 2>&1 || echo failure
+_scratch_cycle_mount
+
+echo "Shrink fs (out-of-bound)"
+$XFS_GROWFS_PROG -D $((dblocks-agsize-1)) $SCRATCH_MNT \
+	>> $seqres.full 2>&1 && echo failure
+_scratch_cycle_mount
+
+$XFS_INFO_PROG $SCRATCH_MNT >> $seqres.full
+
+_scratch_unmount
   ^^^
   It's not necessary.
ok. It seems that ./check will fsck scratch device as well.
Will update it.

Thanks,
Gao Xiang
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help