From: Dave Chinner <david@fromorbit.com>
To: xfs@oss.sgi.com
Subject: [PATCH] xfsqa: make hole tests independent of speculative allocation patterns
Date: Tue, 21 Dec 2010 20:02:00 +1100 [thread overview]
Message-ID: <1292922120-28360-1-git-send-email-david@fromorbit.com> (raw)
From: Dave Chinner <dchinner@redhat.com>
Many of the "count-the-holes" tests (008, 012, etc) do writes that extend the
file and hence allocation patterns are dependent on speculative allocation
beyond EOF behaviour. Hence if we change that behaviour, these tests all fail
because there is a different pattern of holes.
Make the tests independent of EOF preallocation behaviour by first truncating
the file to the size the test is defined to use. This prevents speculative
prealocation from occurring, and hence changes in such behaviour will not cause
the tests to fail.
Signed-off-by: Dave Chinner <dchinner@redhat.com>
---
203 | 4 ++++
src/holes.c | 11 +++++++++++
src/randholes.c | 10 ++++++++++
3 files changed, 25 insertions(+), 0 deletions(-)
diff --git a/203 b/203
index 6fae361..be69dfa 100755
--- a/203
+++ b/203
@@ -36,6 +36,10 @@ _write_holes()
file=$1
holes=$2
let writes=$holes+1
+ let fsize=$(($writes * 0x100000))
+
+ # prevent EOF preallocation from affecting results
+ xfs_io -f $file -c "truncate $fsize"
offset=0
for i in `seq 0 $writes`; do
diff --git a/src/holes.c b/src/holes.c
index 1ad5093..3be8a66 100644
--- a/src/holes.c
+++ b/src/holes.c
@@ -79,6 +79,17 @@ main(int argc, char *argv[])
perror("open");
return 1;
}
+
+ /*
+ * Avoid allocation patterns being perturbed by different speculative
+ * preallocation beyond EOF configurations by first truncating the file
+ * to the expected maximum file size.
+ */
+ if (ftruncate(fd, filesize) < 0) {
+ perror("ftruncate");
+ exit(EXIT_FAILURE);
+ }
+
for (i = 0; i < count; i++) {
writeblks(fd, filesize, blocksize, interleave, i, rev);
}
diff --git a/src/randholes.c b/src/randholes.c
index b7c89b3..b43da81 100644
--- a/src/randholes.c
+++ b/src/randholes.c
@@ -208,6 +208,16 @@ writeblks(char *fname, int fd, size_t alignment)
memset(buffer, 0, blocksize);
}
+ /*
+ * Avoid allocation patterns being perturbed by different speculative
+ * preallocation beyond EOF configurations by first truncating the file
+ * to the expected maximum file size.
+ */
+ if (ftruncate(fd, filesize) < 0) {
+ perror("ftruncate");
+ exit(EXIT_FAILURE);
+ }
+
do {
if (verbose && ((count % 100) == 0)) {
printf(".");
--
1.7.2.3
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
next reply other threads:[~2010-12-21 9:00 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-21 9:02 Dave Chinner [this message]
2010-12-21 16:46 ` [PATCH] xfsqa: make hole tests independent of speculative allocation patterns Christoph Hellwig
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=1292922120-28360-1-git-send-email-david@fromorbit.com \
--to=david@fromorbit.com \
--cc=xfs@oss.sgi.com \
/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