From: Dave Chinner <david@fromorbit.com>
To: fstests@vger.kernel.org
Subject: [PATCH 1/3] generic/018: use xfs_io and larger buffers for writes
Date: Thu, 14 May 2015 11:53:35 +1000 [thread overview]
Message-ID: <1431568417-6462-2-git-send-email-david@fromorbit.com> (raw)
In-Reply-To: <1431568417-6462-1-git-send-email-david@fromorbit.com>
From: Dave Chinner <dchinner@redhat.com>
The test currently uses 'dd' directly for writing to files; instead
we should be using the xfs_io pwrite command.
Also, when we have a configuration that does not do delayed
allocation (e.g. dax), there is no guarantee that the files will be
allocated in the pattern expected, so do all the writes from a
single buffer so the kernel can allocate extents in the manner the
test expects as much as possible.
Signed-off-by: Dave Chinner <dchinner@redhat.com>
---
tests/generic/018 | 19 ++++++++++++-------
1 file changed, 12 insertions(+), 7 deletions(-)
diff --git a/tests/generic/018 b/tests/generic/018
index 2b804b5..fbefbe2 100755
--- a/tests/generic/018
+++ b/tests/generic/018
@@ -57,6 +57,7 @@ fragfile=$SCRATCH_MNT/fragfile.$$
rm -f $fragfile
# Craft some fragmented files, defrag them, check the result.
+bsize=4096
echo "zero-length file:" | tee -a $seqres.full
touch $fragfile
@@ -67,24 +68,28 @@ $XFS_IO_PROG -f -c "truncate 1m" $fragfile
_defrag --before 0 --after 0 $fragfile
echo "Contiguous file:" | tee -a $seqres.full
-dd if=/dev/zero of=$fragfile bs=4k count=4 &>/dev/null
+$XFS_IO_PROG -f -c "pwrite -b $((4 * bsize)) 0 $((4 * bsize))" $fragfile \
+ > /dev/null
_defrag --before 1 --after 1 $fragfile
echo "Write backwards sync, but contiguous - should defrag to 1 extent" | tee -a $seqres.full
-for I in `seq 9 -1 0`; do
- dd if=/dev/zero of=$fragfile bs=4k count=1 conv=notrunc seek=$I oflag=sync &>/dev/null
+for i in `seq 9 -1 0`; do
+ $XFS_IO_PROG -fs -c "pwrite $((i * bsize)) $bsize" $fragfile \
+ > /dev/null
done
_defrag --before 10 --after 1 $fragfile
echo "Write backwards sync leaving holes - defrag should do nothing" | tee -a $seqres.full
-for I in `seq 31 -2 0`; do
- dd if=/dev/zero of=$fragfile bs=4k count=1 conv=notrunc seek=$I oflag=sync &>/dev/null
+for i in `seq 31 -2 0`; do
+ $XFS_IO_PROG -fs -c "pwrite $((i * bsize)) $bsize" $fragfile \
+ > /dev/null
done
_defrag --before 16 --after 16 $fragfile
echo "Write forwards sync leaving holes - defrag should do nothing" | tee -a $seqres.full
-for I in `seq 0 2 31`; do
- dd if=/dev/zero of=$fragfile bs=4k count=1 conv=notrunc seek=$I oflag=sync &>/dev/null
+for i in `seq 0 2 31`; do
+ $XFS_IO_PROG -fs -c "pwrite $((i * bsize)) $bsize" $fragfile \
+ > /dev/null
done
_defrag --before 16 --after 16 $fragfile
--
2.0.0
next prev parent reply other threads:[~2015-05-14 1:53 UTC|newest]
Thread overview: 5+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-14 1:53 [PATCH 0/3] generic: fixes for different allocation behaviours Dave Chinner
2015-05-14 1:53 ` Dave Chinner [this message]
2015-05-14 1:53 ` [PATCH 2/3] generic/223, xfs/203: IO is not well aligned Dave Chinner
2015-05-14 1:53 ` [PATCH 3/3] generic/275: writes may not partially succeed Dave Chinner
2015-05-19 12:23 ` [PATCH 0/3] generic: fixes for different allocation behaviours Brian Foster
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=1431568417-6462-2-git-send-email-david@fromorbit.com \
--to=david@fromorbit.com \
--cc=fstests@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.