diff mbox series

[5/5] xfs: test growfs of the realtime device

Message ID 168840384128.1317961.1554188648447496379.stgit@frogsfrogsfrogs (mailing list archive)
State New, archived
Headers show
Series fstests: random fixes for v2023.06.18 | expand

Commit Message

Darrick J. Wong July 3, 2023, 5:04 p.m. UTC
From: Darrick J. Wong <djwong@kernel.org>

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>
---
 tests/xfs/934     |   79 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/934.out |   19 +++++++++++++
 2 files changed, 98 insertions(+)
 create mode 100755 tests/xfs/934
 create mode 100644 tests/xfs/934.out

Comments

Andrey Albershteyn July 4, 2023, 2:03 p.m. UTC | #1
On 2023-07-03 10:04:01, Darrick J. Wong wrote:
> From: Darrick J. Wong <djwong@kernel.org>
> 
> 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>
> ---
>  tests/xfs/934     |   79 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>  tests/xfs/934.out |   19 +++++++++++++
>  2 files changed, 98 insertions(+)
>  create mode 100755 tests/xfs/934
>  create mode 100644 tests/xfs/934.out
> 
> 
> diff --git a/tests/xfs/934 b/tests/xfs/934
> new file mode 100755
> index 0000000000..f2db4050a7
> --- /dev/null
> +++ b/tests/xfs/934
> @@ -0,0 +1,79 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0
> +# Copyright (c) 2000-2002 Silicon Graphics, Inc.  All Rights Reserved.

Oracle?

> +#
> +# FS QA Test No. 934
> +#
> +# 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

Is this needed for something?

> +    _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)"

I think "fail" is already printed by _do

These are nitpicks, anyway looks good to me:
Reviewed-by: Andrey Albershteyn <aalbersh@redhat.com>
Andrey Albershteyn July 4, 2023, 2:23 p.m. UTC | #2
oh those are from 041, haven't noticed
Darrick J. Wong July 4, 2023, 3:52 p.m. UTC | #3
On Tue, Jul 04, 2023 at 04:03:57PM +0200, Andrey Albershteyn wrote:
> On 2023-07-03 10:04:01, Darrick J. Wong wrote:
> > From: Darrick J. Wong <djwong@kernel.org>
> > 
> > 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>
> > ---
> >  tests/xfs/934     |   79 +++++++++++++++++++++++++++++++++++++++++++++++++++++
> >  tests/xfs/934.out |   19 +++++++++++++
> >  2 files changed, 98 insertions(+)
> >  create mode 100755 tests/xfs/934
> >  create mode 100644 tests/xfs/934.out
> > 
> > 
> > diff --git a/tests/xfs/934 b/tests/xfs/934
> > new file mode 100755
> > index 0000000000..f2db4050a7
> > --- /dev/null
> > +++ b/tests/xfs/934
> > @@ -0,0 +1,79 @@
> > +#! /bin/bash
> > +# SPDX-License-Identifier: GPL-2.0
> > +# Copyright (c) 2000-2002 Silicon Graphics, Inc.  All Rights Reserved.
> 
> Oracle?

Eh, this is really just a tweak of xfs/041 so I retained the old
copyright.

> > +#
> > +# FS QA Test No. 934
> > +#
> > +# 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
> 
> Is this needed for something?

...and all the other weird bits are copied verbatim.

Thanks for reviewing!

--D

> > +    _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)"
> 
> I think "fail" is already printed by _do
> 
> These are nitpicks, anyway looks good to me:
> Reviewed-by: Andrey Albershteyn <aalbersh@redhat.com>
> 
> -- 
> - Andrey
>
diff mbox series

Patch

diff --git a/tests/xfs/934 b/tests/xfs/934
new file mode 100755
index 0000000000..f2db4050a7
--- /dev/null
+++ b/tests/xfs/934
@@ -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. 934
+#
+# 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/934.out b/tests/xfs/934.out
new file mode 100644
index 0000000000..07da1eb7cb
--- /dev/null
+++ b/tests/xfs/934.out
@@ -0,0 +1,19 @@ 
+QA output created by 934
+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.