Message ID | 20170523140618.24387-1-lhenriques@suse.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue 23-05-17 15:06:18, Luis Henriques wrote: > Filesystesm with the "default behaviour" will always return the offset of > the end of the file when lseek'ing with SEEK_HOLE. This test does the > following: > > - fallocate 4 << 20 bytes > - write PAGE_SIZE bytes at offset 0 > - writes PAGE_SIZE bytes at offset 4 << 20 > > Thus, using lseek in an FS with the "default behaviour" will set the > position at 4 << 20 + PAGE_SIZE. > > Cc: Jan Kara <jack@suse.cz> > Signed-off-by: Luis Henriques <lhenriques@suse.com> Thanks for fixing this. You can add: Reviewed-by: Jan Kara <jack@suse.cz> Honza > --- > src/seek_sanity_test.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/src/seek_sanity_test.c b/src/seek_sanity_test.c > index d52e2b6dab79..b35a324c749c 100644 > --- a/src/seek_sanity_test.c > +++ b/src/seek_sanity_test.c > @@ -335,8 +335,8 @@ static int test15(int fd, int testnum) > goto out; > > /* offset at the beginning */ > - ret += do_lseek(testnum, 1, fd, filsz, SEEK_HOLE, 0, bufsz); > - ret += do_lseek(testnum, 2, fd, filsz, SEEK_HOLE, 1, bufsz); > + ret += do_lseek(testnum, 1, fd, filsz + bufsz, SEEK_HOLE, 0, bufsz); > + ret += do_lseek(testnum, 2, fd, filsz + bufsz, SEEK_HOLE, 1, bufsz); > ret += do_lseek(testnum, 3, fd, filsz, SEEK_DATA, 0, 0); > ret += do_lseek(testnum, 4, fd, filsz, SEEK_DATA, 1, 1); > ret += do_lseek(testnum, 5, fd, filsz, SEEK_DATA, bufsz, filsz);
On Tue, May 23, 2017 at 03:06:18PM +0100, Luis Henriques wrote: > Filesystesm with the "default behaviour" will always return the offset of > the end of the file when lseek'ing with SEEK_HOLE. This test does the > following: > > - fallocate 4 << 20 bytes > - write PAGE_SIZE bytes at offset 0 > - writes PAGE_SIZE bytes at offset 4 << 20 > > Thus, using lseek in an FS with the "default behaviour" will set the > position at 4 << 20 + PAGE_SIZE. Thanks for fixing it! I've tested it on a "default behavior" filesystem (gfs2) this time, and test passed. > > Cc: Jan Kara <jack@suse.cz> > Signed-off-by: Luis Henriques <lhenriques@suse.com> > --- > src/seek_sanity_test.c | 4 ++-- > 1 file changed, 2 insertions(+), 2 deletions(-) > > diff --git a/src/seek_sanity_test.c b/src/seek_sanity_test.c > index d52e2b6dab79..b35a324c749c 100644 > --- a/src/seek_sanity_test.c > +++ b/src/seek_sanity_test.c > @@ -335,8 +335,8 @@ static int test15(int fd, int testnum) > goto out; > > /* offset at the beginning */ > - ret += do_lseek(testnum, 1, fd, filsz, SEEK_HOLE, 0, bufsz); > - ret += do_lseek(testnum, 2, fd, filsz, SEEK_HOLE, 1, bufsz); > + ret += do_lseek(testnum, 1, fd, filsz + bufsz, SEEK_HOLE, 0, bufsz); > + ret += do_lseek(testnum, 2, fd, filsz + bufsz, SEEK_HOLE, 1, bufsz); I think we should update filsz after the last write, before any do_lseek() test, because filsz was extended by bufsz and the 4th arg of do_lseek expects the actual file size. > ret += do_lseek(testnum, 3, fd, filsz, SEEK_DATA, 0, 0); > ret += do_lseek(testnum, 4, fd, filsz, SEEK_DATA, 1, 1); > ret += do_lseek(testnum, 5, fd, filsz, SEEK_DATA, bufsz, filsz); And the expected result of the 5th test should be 'filsz - bufsz' then. Thanks, Eryu > -- > To unsubscribe from this list: send the line "unsubscribe fstests" in > the body of a message to majordomo@vger.kernel.org > More majordomo info at http://vger.kernel.org/majordomo-info.html -- To unsubscribe from this list: send the line "unsubscribe fstests" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/src/seek_sanity_test.c b/src/seek_sanity_test.c index d52e2b6dab79..b35a324c749c 100644 --- a/src/seek_sanity_test.c +++ b/src/seek_sanity_test.c @@ -335,8 +335,8 @@ static int test15(int fd, int testnum) goto out; /* offset at the beginning */ - ret += do_lseek(testnum, 1, fd, filsz, SEEK_HOLE, 0, bufsz); - ret += do_lseek(testnum, 2, fd, filsz, SEEK_HOLE, 1, bufsz); + ret += do_lseek(testnum, 1, fd, filsz + bufsz, SEEK_HOLE, 0, bufsz); + ret += do_lseek(testnum, 2, fd, filsz + bufsz, SEEK_HOLE, 1, bufsz); ret += do_lseek(testnum, 3, fd, filsz, SEEK_DATA, 0, 0); ret += do_lseek(testnum, 4, fd, filsz, SEEK_DATA, 1, 1); ret += do_lseek(testnum, 5, fd, filsz, SEEK_DATA, bufsz, filsz);
Filesystesm with the "default behaviour" will always return the offset of the end of the file when lseek'ing with SEEK_HOLE. This test does the following: - fallocate 4 << 20 bytes - write PAGE_SIZE bytes at offset 0 - writes PAGE_SIZE bytes at offset 4 << 20 Thus, using lseek in an FS with the "default behaviour" will set the position at 4 << 20 + PAGE_SIZE. Cc: Jan Kara <jack@suse.cz> Signed-off-by: Luis Henriques <lhenriques@suse.com> --- src/seek_sanity_test.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) -- To unsubscribe from this list: send the line "unsubscribe fstests" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html