From: Chandan Babu R <chandanrlinux@gmail.com>
To: fstests@vger.kernel.org
Cc: Chandan Babu R <chandanrlinux@gmail.com>,
linux-xfs@vger.kernel.org, djwong@kernel.org
Subject: [PATCH V2 2/2] fstests: Fix tests to execute in multi-block directory config
Date: Fri, 2 Apr 2021 08:19:40 +0530 [thread overview]
Message-ID: <20210402024940.7689-2-chandanrlinux@gmail.com> (raw)
In-Reply-To: <20210402024940.7689-1-chandanrlinux@gmail.com>
xfs/{529,531,532,534,535} attempt to create test files after injecting
reduce_max_iextents error tag. Creation of test files fails when using a
multi-block directory test configuration because,
1. A directory can have a pseudo maximum extent count of 10.
2. In the worst case a directory entry creation operation can consume
(XFS_DA_NODE_MAXDEPTH + 1 + 1) * (Nr fs blocks in a single directory block)
extents.
With 1k fs block size and 4k directory block size, this evaluates to,
(5 + 1 + 1) * 4
= 7 * 4
= 28
> 10 (Pseudo maximum inode extent count).
This commit fixes the issue by creating test files before injecting
reduce_max_iextents error tag.
Reported-by: Darrick J. Wong <djwong@kernel.org>
Suggested-by: Darrick J. Wong <djwong@kernel.org>
Reviewed-by: Darrick J. Wong <djwong@kernel.org>
Signed-off-by: Chandan Babu R <chandanrlinux@gmail.com>
---
tests/xfs/529 | 24 +++++++++++++++++++++---
tests/xfs/529.out | 6 +++++-
tests/xfs/531 | 11 ++++++++---
tests/xfs/531.out | 9 ++++++++-
tests/xfs/532 | 17 ++++++++++-------
tests/xfs/532.out | 6 +++---
tests/xfs/534 | 9 ++++++---
tests/xfs/534.out | 5 ++++-
tests/xfs/535 | 11 +++++++++++
tests/xfs/535.out | 2 ++
10 files changed, 78 insertions(+), 22 deletions(-)
diff --git a/tests/xfs/529 b/tests/xfs/529
index abe5b1e0..b4533eba 100755
--- a/tests/xfs/529
+++ b/tests/xfs/529
@@ -54,6 +54,8 @@ echo "* Delalloc to written extent conversion"
testfile=$SCRATCH_MNT/testfile
+touch $testfile
+
echo "Inject reduce_max_iextents error tag"
_scratch_inject_error reduce_max_iextents 1
@@ -74,10 +76,18 @@ if (( $nextents > 10 )); then
exit 1
fi
+echo "Disable reduce_max_iextents error tag"
+_scratch_inject_error reduce_max_iextents 0
+
rm $testfile
echo "* Fallocate unwritten extents"
+touch $testfile
+
+echo "Inject reduce_max_iextents error tag"
+_scratch_inject_error reduce_max_iextents 1
+
echo "Fallocate fragmented file"
for i in $(seq 0 2 $((nr_blks - 1))); do
$XFS_IO_PROG -f -c "falloc $((i * bsize)) $bsize" $testfile \
@@ -93,10 +103,18 @@ if (( $nextents > 10 )); then
exit 1
fi
+echo "Disable reduce_max_iextents error tag"
+_scratch_inject_error reduce_max_iextents 0
+
rm $testfile
echo "* Directio write"
+touch $testfile
+
+echo "Inject reduce_max_iextents error tag"
+_scratch_inject_error reduce_max_iextents 1
+
echo "Create fragmented file via directio writes"
for i in $(seq 0 2 $((nr_blks - 1))); do
$XFS_IO_PROG -d -s -f -c "pwrite $((i * bsize)) $bsize" $testfile \
@@ -112,15 +130,15 @@ if (( $nextents > 10 )); then
exit 1
fi
+echo "Disable reduce_max_iextents error tag"
+_scratch_inject_error reduce_max_iextents 0
+
rm $testfile
# Check if XFS gracefully returns with an error code when we try to increase
# extent count of user quota inode beyond the pseudo max extent count limit.
echo "* Extend quota inodes"
-echo "Disable reduce_max_iextents error tag"
-_scratch_inject_error reduce_max_iextents 0
-
echo "Consume free space"
fillerdir=$SCRATCH_MNT/fillerdir
nr_free_blks=$(stat -f -c '%f' $SCRATCH_MNT)
diff --git a/tests/xfs/529.out b/tests/xfs/529.out
index b2ae3f42..13489d34 100644
--- a/tests/xfs/529.out
+++ b/tests/xfs/529.out
@@ -4,14 +4,18 @@ Format and mount fs
Inject reduce_max_iextents error tag
Create fragmented file
Verify $testfile's extent count
+Disable reduce_max_iextents error tag
* Fallocate unwritten extents
+Inject reduce_max_iextents error tag
Fallocate fragmented file
Verify $testfile's extent count
+Disable reduce_max_iextents error tag
* Directio write
+Inject reduce_max_iextents error tag
Create fragmented file via directio writes
Verify $testfile's extent count
-* Extend quota inodes
Disable reduce_max_iextents error tag
+* Extend quota inodes
Consume free space
Create fragmented filesystem
Inject reduce_max_iextents error tag
diff --git a/tests/xfs/531 b/tests/xfs/531
index caec7848..935c52b0 100755
--- a/tests/xfs/531
+++ b/tests/xfs/531
@@ -49,13 +49,15 @@ nr_blks=30
testfile=$SCRATCH_MNT/testfile
-echo "Inject reduce_max_iextents error tag"
-_scratch_inject_error reduce_max_iextents 1
-
for op in fpunch finsert fcollapse fzero; do
echo "* $op regular file"
echo "Create \$testfile"
+ touch $testfile
+
+ echo "Inject reduce_max_iextents error tag"
+ _scratch_inject_error reduce_max_iextents 1
+
$XFS_IO_PROG -f -s \
-c "pwrite -b $((nr_blks * bsize)) 0 $((nr_blks * bsize))" \
$testfile >> $seqres.full
@@ -75,6 +77,9 @@ for op in fpunch finsert fcollapse fzero; do
exit 1
fi
+ echo "Disable reduce_max_iextents error tag"
+ _scratch_inject_error reduce_max_iextents 0
+
rm $testfile
done
diff --git a/tests/xfs/531.out b/tests/xfs/531.out
index f85776c9..6ac90787 100644
--- a/tests/xfs/531.out
+++ b/tests/xfs/531.out
@@ -1,19 +1,26 @@
QA output created by 531
Format and mount fs
-Inject reduce_max_iextents error tag
* fpunch regular file
Create $testfile
+Inject reduce_max_iextents error tag
fpunch alternating blocks
Verify $testfile's extent count
+Disable reduce_max_iextents error tag
* finsert regular file
Create $testfile
+Inject reduce_max_iextents error tag
finsert alternating blocks
Verify $testfile's extent count
+Disable reduce_max_iextents error tag
* fcollapse regular file
Create $testfile
+Inject reduce_max_iextents error tag
fcollapse alternating blocks
Verify $testfile's extent count
+Disable reduce_max_iextents error tag
* fzero regular file
Create $testfile
+Inject reduce_max_iextents error tag
fzero alternating blocks
Verify $testfile's extent count
+Disable reduce_max_iextents error tag
diff --git a/tests/xfs/532 b/tests/xfs/532
index 1c789217..2bed574a 100755
--- a/tests/xfs/532
+++ b/tests/xfs/532
@@ -63,9 +63,6 @@ for dentry in $(ls -1 $fillerdir/); do
$here/src/punch-alternating $fillerdir/$dentry >> $seqres.full
done
-echo "Inject reduce_max_iextents error tag"
-_scratch_inject_error reduce_max_iextents 1
-
echo "Inject bmap_alloc_minlen_extent error tag"
_scratch_inject_error bmap_alloc_minlen_extent 1
@@ -74,6 +71,9 @@ echo "* Set xattrs"
echo "Create \$testfile"
touch $testfile
+echo "Inject reduce_max_iextents error tag"
+_scratch_inject_error reduce_max_iextents 1
+
echo "Create xattrs"
nr_attrs=$((bsize * 20 / attr_len))
for i in $(seq 1 $nr_attrs); do
@@ -90,6 +90,9 @@ if (( $naextents > 10 )); then
exit 1
fi
+echo "Disable reduce_max_iextents error tag"
+_scratch_inject_error reduce_max_iextents 0
+
echo "Remove \$testfile"
rm $testfile
@@ -98,9 +101,6 @@ echo "* Remove xattrs"
echo "Create \$testfile"
touch $testfile
-echo "Disable reduce_max_iextents error tag"
-_scratch_inject_error reduce_max_iextents 0
-
echo "Create initial xattr extents"
naextents=0
@@ -132,7 +132,10 @@ if [[ $? == 0 ]]; then
exit 1
fi
-rm $testfile && echo "Successfully removed \$testfile"
+echo "Disable reduce_max_iextents error tag"
+_scratch_inject_error reduce_max_iextents 0
+
+rm $testfile
# success, all done
status=0
diff --git a/tests/xfs/532.out b/tests/xfs/532.out
index 8e19d7bc..db52108f 100644
--- a/tests/xfs/532.out
+++ b/tests/xfs/532.out
@@ -2,17 +2,17 @@ QA output created by 532
Format and mount fs
Consume free space
Create fragmented filesystem
-Inject reduce_max_iextents error tag
Inject bmap_alloc_minlen_extent error tag
* Set xattrs
Create $testfile
+Inject reduce_max_iextents error tag
Create xattrs
Verify $testfile's naextent count
+Disable reduce_max_iextents error tag
Remove $testfile
* Remove xattrs
Create $testfile
-Disable reduce_max_iextents error tag
Create initial xattr extents
Inject reduce_max_iextents error tag
Remove xattr to trigger -EFBIG
-Successfully removed $testfile
+Disable reduce_max_iextents error tag
diff --git a/tests/xfs/534 b/tests/xfs/534
index a8348526..338282ef 100755
--- a/tests/xfs/534
+++ b/tests/xfs/534
@@ -45,9 +45,6 @@ bsize=$(_get_file_block_size $SCRATCH_MNT)
testfile=${SCRATCH_MNT}/testfile
-echo "Inject reduce_max_iextents error tag"
-_scratch_inject_error reduce_max_iextents 1
-
nr_blks=15
for io in Buffered Direct; do
@@ -62,6 +59,9 @@ for io in Buffered Direct; do
xfs_io_flag="-d"
fi
+ echo "Inject reduce_max_iextents error tag"
+ _scratch_inject_error reduce_max_iextents 1
+
echo "$io write to every other block of fallocated space"
for i in $(seq 1 2 $((nr_blks - 1))); do
$XFS_IO_PROG -f -s $xfs_io_flag -c "pwrite $((i * bsize)) $bsize" \
@@ -76,6 +76,9 @@ for io in Buffered Direct; do
exit 1
fi
+ echo "Disable reduce_max_iextents error tag"
+ _scratch_inject_error reduce_max_iextents 0
+
rm $testfile
done
diff --git a/tests/xfs/534.out b/tests/xfs/534.out
index f7c0821b..0a0cd3a6 100644
--- a/tests/xfs/534.out
+++ b/tests/xfs/534.out
@@ -1,11 +1,14 @@
QA output created by 534
Format and mount fs
-Inject reduce_max_iextents error tag
* Buffered write to unwritten extent
Fallocate 15 blocks
+Inject reduce_max_iextents error tag
Buffered write to every other block of fallocated space
Verify $testfile's extent count
+Disable reduce_max_iextents error tag
* Direct write to unwritten extent
Fallocate 15 blocks
+Inject reduce_max_iextents error tag
Direct write to every other block of fallocated space
Verify $testfile's extent count
+Disable reduce_max_iextents error tag
diff --git a/tests/xfs/535 b/tests/xfs/535
index 2d82624c..f2a8a3a5 100755
--- a/tests/xfs/535
+++ b/tests/xfs/535
@@ -51,6 +51,9 @@ nr_blks=15
srcfile=${SCRATCH_MNT}/srcfile
dstfile=${SCRATCH_MNT}/dstfile
+touch $srcfile
+touch $dstfile
+
echo "Inject reduce_max_iextents error tag"
_scratch_inject_error reduce_max_iextents 1
@@ -77,10 +80,18 @@ if (( $nextents > 10 )); then
exit 1
fi
+echo "Disable reduce_max_iextents error tag"
+_scratch_inject_error reduce_max_iextents 0
+
rm $dstfile
echo "* Funshare shared extent"
+touch $dstfile
+
+echo "Inject reduce_max_iextents error tag"
+_scratch_inject_error reduce_max_iextents 1
+
echo "Share the extent with \$dstfile"
_reflink $srcfile $dstfile >> $seqres.full
diff --git a/tests/xfs/535.out b/tests/xfs/535.out
index 4383e921..8f600272 100644
--- a/tests/xfs/535.out
+++ b/tests/xfs/535.out
@@ -6,7 +6,9 @@ Create a $srcfile having an extent of length 15 blocks
Share the extent with $dstfile
Buffered write to every other block of $dstfile's shared extent
Verify $dstfile's extent count
+Disable reduce_max_iextents error tag
* Funshare shared extent
+Inject reduce_max_iextents error tag
Share the extent with $dstfile
Funshare every other block of $dstfile's shared extent
Verify $dstfile's extent count
--
2.29.2
prev parent reply other threads:[~2021-04-02 2:50 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-04-02 2:49 [PATCH V2 1/2] xfs/529: Execute chown on an existing directory entry Chandan Babu R
2021-04-02 2:49 ` Chandan Babu R [this message]
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=20210402024940.7689-2-chandanrlinux@gmail.com \
--to=chandanrlinux@gmail.com \
--cc=djwong@kernel.org \
--cc=fstests@vger.kernel.org \
--cc=linux-xfs@vger.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.