diff mbox series

[2/7] xfs: test regression in xfs_bmap_validate_extent

Message ID 160382536365.1203387.5299416996869850602.stgit@magnolia (mailing list archive)
State New, archived
Headers show
Series various: test xfs things fixed in 5.10 | expand

Commit Message

Darrick J. Wong Oct. 27, 2020, 7:02 p.m. UTC
From: Darrick J. Wong <darrick.wong@oracle.com>

This is a regression test to make sure that we can have realtime files
with xattr blocks and not trip the verifiers.

Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
---
 tests/xfs/758     |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 tests/xfs/758.out |    2 ++
 tests/xfs/group   |    1 +
 3 files changed, 62 insertions(+)
 create mode 100755 tests/xfs/758
 create mode 100644 tests/xfs/758.out

Comments

Chandan Babu R Oct. 29, 2020, 6:45 a.m. UTC | #1
On Wednesday 28 October 2020 12:32:43 AM IST Darrick J. Wong wrote:
> From: Darrick J. Wong <darrick.wong@oracle.com>
> 
> This is a regression test to make sure that we can have realtime files
> with xattr blocks and not trip the verifiers.
>

Looks good to me.

Reviewed-by: Chandan Babu R <chandanrlinux@gmail.com>

> Signed-off-by: Darrick J. Wong <darrick.wong@oracle.com>
> ---
>  tests/xfs/758     |   59 +++++++++++++++++++++++++++++++++++++++++++++++++++++
>  tests/xfs/758.out |    2 ++
>  tests/xfs/group   |    1 +
>  3 files changed, 62 insertions(+)
>  create mode 100755 tests/xfs/758
>  create mode 100644 tests/xfs/758.out
> 
> 
> diff --git a/tests/xfs/758 b/tests/xfs/758
> new file mode 100755
> index 00000000..e522ae28
> --- /dev/null
> +++ b/tests/xfs/758
> @@ -0,0 +1,59 @@
> +#! /bin/bash
> +# SPDX-License-Identifier: GPL-2.0-or-later
> +# Copyright (c) 2020, Oracle.  All Rights Reserved.
> +#
> +# FS QA Test No. 758
> +#
> +# This is a regression test for "xfs: fix xfs_bmap_validate_extent_raw when
> +# checking attr fork of rt files", which fixes the bmap record validator so
> +# that it will not check the attr fork extent mappings of a realtime file
> +# against the size of the realtime volume.
> +
> +seq=`basename $0`
> +seqres=$RESULT_DIR/$seq
> +echo "QA output created by $seq"
> +
> +here=`pwd`
> +tmp=/tmp/$$
> +status=1    # failure is the default!
> +trap "_cleanup; exit \$status" 0 1 2 3 15
> +
> +_cleanup()
> +{
> +	cd /
> +	rm -f $tmp.*
> +}
> +
> +# get standard environment, filters and checks
> +. ./common/rc
> +. ./common/filter
> +
> +# real QA test starts here
> +_supported_fs xfs
> +_require_scratch
> +_require_realtime
> +
> +rm -f $seqres.full
> +
> +# Format filesystem with very tiny realtime volume
> +_scratch_mkfs -r size=256k > $seqres.full
> +_scratch_mount >> $seqres.full
> +
> +# Create a realtime file
> +$XFS_IO_PROG -f -R -c 'pwrite 0 64k' -c stat $SCRATCH_MNT/v >> $seqres.full
> +
> +# Add enough xattr data to force creation of xattr blocks at a higher address
> +# on the data device than the size of the realtime volume
> +for i in `seq 0 16`; do
> +	$ATTR_PROG -s user.test$i $SCRATCH_MNT/v < $SCRATCH_MNT/v >> $seqres.full
> +done
> +
> +# Force flushing extent maps to disk to trip the verifier
> +_scratch_cycle_mount
> +
> +# Now let that unmount
> +echo Silence is golden.
> +
> +# success, all done
> +status=0
> +exit
> diff --git a/tests/xfs/758.out b/tests/xfs/758.out
> new file mode 100644
> index 00000000..6d219f8e
> --- /dev/null
> +++ b/tests/xfs/758.out
> @@ -0,0 +1,2 @@
> +QA output created by 758
> +Silence is golden.
> diff --git a/tests/xfs/group b/tests/xfs/group
> index ffd18166..771680cf 100644
> --- a/tests/xfs/group
> +++ b/tests/xfs/group
> @@ -519,4 +519,5 @@
>  519 auto quick reflink
>  520 auto quick reflink
>  521 auto quick realtime growfs
> +758 auto quick rw attr realtime
>  763 auto quick rw realtime
> 
>
diff mbox series

Patch

diff --git a/tests/xfs/758 b/tests/xfs/758
new file mode 100755
index 00000000..e522ae28
--- /dev/null
+++ b/tests/xfs/758
@@ -0,0 +1,59 @@ 
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0-or-later
+# Copyright (c) 2020, Oracle.  All Rights Reserved.
+#
+# FS QA Test No. 758
+#
+# This is a regression test for "xfs: fix xfs_bmap_validate_extent_raw when
+# checking attr fork of rt files", which fixes the bmap record validator so
+# that it will not check the attr fork extent mappings of a realtime file
+# against the size of the realtime volume.
+
+seq=`basename $0`
+seqres=$RESULT_DIR/$seq
+echo "QA output created by $seq"
+
+here=`pwd`
+tmp=/tmp/$$
+status=1    # failure is the default!
+trap "_cleanup; exit \$status" 0 1 2 3 15
+
+_cleanup()
+{
+	cd /
+	rm -f $tmp.*
+}
+
+# get standard environment, filters and checks
+. ./common/rc
+. ./common/filter
+
+# real QA test starts here
+_supported_fs xfs
+_require_scratch
+_require_realtime
+
+rm -f $seqres.full
+
+# Format filesystem with very tiny realtime volume
+_scratch_mkfs -r size=256k > $seqres.full
+_scratch_mount >> $seqres.full
+
+# Create a realtime file
+$XFS_IO_PROG -f -R -c 'pwrite 0 64k' -c stat $SCRATCH_MNT/v >> $seqres.full
+
+# Add enough xattr data to force creation of xattr blocks at a higher address
+# on the data device than the size of the realtime volume
+for i in `seq 0 16`; do
+	$ATTR_PROG -s user.test$i $SCRATCH_MNT/v < $SCRATCH_MNT/v >> $seqres.full
+done
+
+# Force flushing extent maps to disk to trip the verifier
+_scratch_cycle_mount
+
+# Now let that unmount
+echo Silence is golden.
+
+# success, all done
+status=0
+exit
diff --git a/tests/xfs/758.out b/tests/xfs/758.out
new file mode 100644
index 00000000..6d219f8e
--- /dev/null
+++ b/tests/xfs/758.out
@@ -0,0 +1,2 @@ 
+QA output created by 758
+Silence is golden.
diff --git a/tests/xfs/group b/tests/xfs/group
index ffd18166..771680cf 100644
--- a/tests/xfs/group
+++ b/tests/xfs/group
@@ -519,4 +519,5 @@ 
 519 auto quick reflink
 520 auto quick reflink
 521 auto quick realtime growfs
+758 auto quick rw attr realtime
 763 auto quick rw realtime