Il 22/08/2011 17:57, Sunil Mushran ha scritto:
Any proposal that differentiates between holes is wrong. It should not
matter where the hole is.
Think of it from the usage-pov.
doff = 0;
while ((doff = lseek(SEEK_DATA, doff)) != -ENXIO) {
hoff = lseek(SEEK_HOLE, doff);
read_offset = doff;
read_len = hoff -doff;
process();
doff = hoff;
}
The goal is to make this as efficient as follows. Treating the last
hole differently adds more code for no benefit.
Mmmm.....It seems that Josef has to be clear in this point. However I
looked for the seek hole test in xfs test suite, but I didn't find
anything. Btrfs guys, how have you got tested the implementation? What
do you think about this corner case? Al, what do you think about it?
The following test was used to test the early implementations.
http://oss.oracle.com/~smushran/seek_data/
Thank you very much!! I found another point. Your test fails with my
implementation because here
(http://www.austingroupbugs.net/view.php?id=415) says: "If whence is
SEEK_DATA, the file offset shall be set to the smallest location of a
byte not within a hole and not less than offset. It shall be an error if
no such byte exists." So in this case I return ENXIO but the test
expects another value. I have to say that there is a bit of confusion
about the real behavior of this new feature :)
Marco
--
To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html