* [PATCH 01/11] xfstests: randholes: Fix two bugs
@ 2010-10-14 14:49 Alex Elder
0 siblings, 0 replies; only message in thread
From: Alex Elder @ 2010-10-14 14:49 UTC (permalink / raw)
To: xfs
This patch fixes two bugs in the "randholes" test program.
First, it is possible for findblock() to return -1 if the random
block number it picks is at or above the highest in-range block
that's already been selected. But this case isn't checked and
the value is blindly used thereafter as if it were valid. Just
exit if this ever occurs.
Second, when the "alloconly" option is is set, blocks are
preallocated in the target file rather than actually writing them.
But unlike when the blocks are written and subsequently read, the
preallocated blocks are *not* offset by the fileoffset parameter.
I'm pretty sure nobody every noticed this because the program itself
doesn't do any verification when blocks are only preallocated. But
it's an inconsistency and I think it ought to be fixed.
Signed-off-by: Alex Elder <aelder@sgi.com>
---
src/randholes.c | 9 +++++++--
1 file changed, 7 insertions(+), 2 deletions(-)
Index: b/src/randholes.c
===================================================================
--- a/src/randholes.c
+++ b/src/randholes.c
@@ -249,11 +249,16 @@ writeblks(char *fname, int fd)
fflush(stdout);
}
block = findblock();
- offset = (__uint64_t)block * blocksize;
+ if (block < 0) {
+ perror("findblock");
+ exit(1);
+ }
+
+ offset = (__uint64_t) block * blocksize;
if (alloconly) {
if (test) continue;
- fl.l_start = offset;
+ fl.l_start = fileoffset + offset;
fl.l_len = blocksize;
fl.l_whence = 0;
_______________________________________________
xfs mailing list
xfs@oss.sgi.com
http://oss.sgi.com/mailman/listinfo/xfs
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2010-10-14 14:48 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-10-14 14:49 [PATCH 01/11] xfstests: randholes: Fix two bugs Alex Elder
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox