From: Chandan Babu R <chandan.babu@oracle.com>
To: fstests@vger.kernel.org
Cc: Chandan Babu R <chandan.babu@oracle.com>,
zlang@kernel.org, linux-xfs@vger.kernel.org
Subject: [PATCH 3/4] xfs/547: Verify that the correct inode extent counters are updated with/without nrext64
Date: Mon, 6 Jun 2022 18:11:00 +0530 [thread overview]
Message-ID: <20220606124101.263872-4-chandan.babu@oracle.com> (raw)
In-Reply-To: <20220606124101.263872-1-chandan.babu@oracle.com>
This commit adds a new test to verify if the correct inode extent counter
fields are updated with/without nrext64 mkfs option.
Signed-off-by: Chandan Babu R <chandan.babu@oracle.com>
---
tests/xfs/547 | 91 +++++++++++++++++++++++++++++++++++++++++++++++
tests/xfs/547.out | 13 +++++++
2 files changed, 104 insertions(+)
create mode 100755 tests/xfs/547
create mode 100644 tests/xfs/547.out
diff --git a/tests/xfs/547 b/tests/xfs/547
new file mode 100755
index 00000000..d5137ca7
--- /dev/null
+++ b/tests/xfs/547
@@ -0,0 +1,91 @@
+#! /bin/bash
+# SPDX-License-Identifier: GPL-2.0
+# Copyright (c) 2022 Oracle. All Rights Reserved.
+#
+# FS QA Test 547
+#
+# Verify that correct inode extent count fields are populated with and without
+# nrext64 feature.
+#
+. ./common/preamble
+_begin_fstest auto quick metadata
+
+# Import common functions.
+. ./common/filter
+. ./common/attr
+. ./common/inject
+. ./common/populate
+
+# real QA test starts here
+_supported_fs xfs
+_require_scratch
+_require_scratch_xfs_nrext64
+_require_attrs
+_require_xfs_debug
+_require_test_program "punch-alternating"
+_require_xfs_io_error_injection "bmap_alloc_minlen_extent"
+
+for nrext64 in 0 1; do
+ echo "* Verify extent counter fields with nrext64=${nrext64} option"
+
+ _scratch_mkfs -i nrext64=${nrext64} -d size=$((512 * 1024 * 1024)) \
+ >> $seqres.full
+ _scratch_mount >> $seqres.full
+
+ bsize=$(_get_file_block_size $SCRATCH_MNT)
+
+ testfile=$SCRATCH_MNT/testfile
+
+ nr_blks=20
+
+ echo "Add blocks to test file's data fork"
+ $XFS_IO_PROG -f -c "pwrite 0 $((nr_blks * bsize))" $testfile \
+ >> $seqres.full
+ $here/src/punch-alternating $testfile
+
+ echo "Consume free space"
+ fillerdir=$SCRATCH_MNT/fillerdir
+ nr_free_blks=$(stat -f -c '%f' $SCRATCH_MNT)
+ nr_free_blks=$((nr_free_blks * 90 / 100))
+
+ _fill_fs $((bsize * nr_free_blks)) $fillerdir $bsize 0 \
+ >> $seqres.full 2>&1
+
+ echo "Create fragmented filesystem"
+ for dentry in $(ls -1 $fillerdir/); do
+ $here/src/punch-alternating $fillerdir/$dentry >> $seqres.full
+ done
+
+ echo "Inject bmap_alloc_minlen_extent error tag"
+ _scratch_inject_error bmap_alloc_minlen_extent 1
+
+ echo "Add blocks to test file's attr fork"
+ attr_len=255
+ nr_attrs=$((nr_blks * bsize / attr_len))
+ for i in $(seq 1 $nr_attrs); do
+ attr="$(printf "trusted.%0247d" $i)"
+ $SETFATTR_PROG -n "$attr" $testfile >> $seqres.full 2>&1
+ [[ $? != 0 ]] && break
+ done
+
+ testino=$(stat -c '%i' $testfile)
+
+ _scratch_unmount >> $seqres.full
+
+ dcnt=$(_scratch_xfs_get_metadata_field core.nextents "inode $testino")
+ acnt=$(_scratch_xfs_get_metadata_field core.naextents "inode $testino")
+
+ if (( $dcnt != 10 )); then
+ echo "Invalid data fork extent count: $dextcnt"
+ exit 1
+ fi
+
+ if (( $acnt < 10 )); then
+ echo "Invalid attr fork extent count: $aextcnt"
+ exit 1
+ fi
+done
+
+# success, all done
+status=0
+exit
diff --git a/tests/xfs/547.out b/tests/xfs/547.out
new file mode 100644
index 00000000..49fcc3c2
--- /dev/null
+++ b/tests/xfs/547.out
@@ -0,0 +1,13 @@
+QA output created by 547
+* Verify extent counter fields with nrext64=0 option
+Add blocks to test file's data fork
+Consume free space
+Create fragmented filesystem
+Inject bmap_alloc_minlen_extent error tag
+Add blocks to test file's attr fork
+* Verify extent counter fields with nrext64=1 option
+Add blocks to test file's data fork
+Consume free space
+Create fragmented filesystem
+Inject bmap_alloc_minlen_extent error tag
+Add blocks to test file's attr fork
--
2.35.1
next prev parent reply other threads:[~2022-06-06 12:41 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-06 12:40 [PATCH 0/4] Large extent counters tests Chandan Babu R
2022-06-06 12:40 ` [PATCH 1/4] xfs/270: Fix ro mount failure when nrext64 option is enabled Chandan Babu R
2022-06-06 15:31 ` Darrick J. Wong
2022-06-07 23:51 ` Dave Chinner
2022-06-08 8:22 ` Chandan Babu R
2022-06-06 12:40 ` [PATCH 2/4] common/xfs: Add helper to check if nrext64 option is supported Chandan Babu R
2022-06-06 15:30 ` Darrick J. Wong
2022-06-07 23:01 ` Dave Chinner
2022-06-08 8:15 ` Chandan Babu R
2022-06-06 12:41 ` Chandan Babu R [this message]
2022-06-06 15:40 ` [PATCH 3/4] xfs/547: Verify that the correct inode extent counters are updated with/without nrext64 Darrick J. Wong
2022-06-07 9:36 ` Chandan Babu R
2022-06-08 3:59 ` Zorro Lang
2022-06-08 9:11 ` Chandan Babu R
2022-06-06 12:41 ` [PATCH 4/4] xfs/548: Verify correctness of upgrading an fs to support large extent counters Chandan Babu R
2022-06-06 15:35 ` Darrick J. Wong
2022-06-07 9:47 ` Chandan Babu R
2022-06-07 15:20 ` Darrick J. Wong
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220606124101.263872-4-chandan.babu@oracle.com \
--to=chandan.babu@oracle.com \
--cc=fstests@vger.kernel.org \
--cc=linux-xfs@vger.kernel.org \
--cc=zlang@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox