aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDarrick J. Wong <djwong@kernel.org>2023-07-03 10:04:01 -0700
committerZorro Lang <zlang@kernel.org>2023-07-07 22:25:37 +0800
commit27211f9bb44b2fab8cd2b76bd57e20328c9480cf (patch)
treea9a72b3e4b209b392bf91e19e69177e11295ea50
parent14941ffecb85b7df5cb732ed5782603ce2ae9933 (diff)
downloadxfstests-dev-27211f9bb44b2fab8cd2b76bd57e20328c9480cf.tar.gz
xfs: test growfs of the realtime device
Create a new test to make sure that growfs on the realtime device works without corrupting anything. Signed-off-by: Darrick J. Wong <djwong@kernel.org> Reviewed-by: Andrey Albershteyn <aalbersh@redhat.com> Signed-off-by: Zorro Lang <zlang@kernel.org>
-rwxr-xr-xtests/xfs/59679
-rw-r--r--tests/xfs/596.out19
2 files changed, 98 insertions, 0 deletions
diff --git a/tests/xfs/596 b/tests/xfs/596
new file mode 100755
index 0000000000..98659e8c72
--- /dev/null
+++ b/tests/xfs/596
@@ -0,0 +1,79 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2000-2002 Silicon Graphics, Inc. All Rights Reserved.
+#
+# FS QA Test No. 596
+#
+# growfs QA tests - repeatedly fill/grow the rt volume of the filesystem check
+# the filesystem contents after each operation. This is the rt equivalent of
+# xfs/041.
+#
+. ./common/preamble
+_begin_fstest growfs ioctl auto
+
+# Override the default cleanup function.
+_cleanup()
+{
+ cd /
+ _scratch_unmount
+ rm -f $tmp.*
+}
+
+# Import common functions.
+. ./common/filter
+
+# real QA test starts here
+_supported_fs xfs
+
+_require_scratch
+_require_realtime
+_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
+rtsize=32
+echo -n "Make $rtsize megabyte rt filesystem on SCRATCH_DEV and mount... "
+_scratch_mkfs_xfs -rsize=${rtsize}m | _filter_mkfs 2> "$tmp.mkfs" >> $seqres.full
+test "${PIPESTATUS[0]}" -eq 0 || _fail "mkfs failed"
+
+. $tmp.mkfs
+onemeginblocks=`expr 1048576 / $dbsize`
+_scratch_mount
+
+# We're growing the realtime device, so force new file creation there
+_xfs_force_bdev realtime $SCRATCH_MNT
+
+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 -R $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"
+ status=1 ; exit
+ fi
+ echo "done"
+done
+
+# success, all done
+echo "Growfs tests passed."
+status=0 ; exit
diff --git a/tests/xfs/596.out b/tests/xfs/596.out
new file mode 100644
index 0000000000..01480c2bc4
--- /dev/null
+++ b/tests/xfs/596.out
@@ -0,0 +1,19 @@
+QA output created by 596
+Make 32 megabyte rt filesystem on SCRATCH_DEV and mount... done
+Fill filesystem... done
+Grow filesystem to 33m... done
+Flush filesystem... done
+Check files... done
+Fill filesystem... done
+Grow filesystem to 67m... done
+Flush filesystem... done
+Check files... done
+Fill filesystem... done
+Grow filesystem to 75m... done
+Flush filesystem... done
+Check files... done
+Fill filesystem... done
+Grow filesystem to 96m... done
+Flush filesystem... done
+Check files... done
+Growfs tests passed.