diff options
author | Joern Engel <joern@logfs.org> | 2010-05-01 17:33:06 +0200 |
---|---|---|
committer | Joern Engel <joern@logfs.org> | 2010-05-01 18:02:30 +0200 |
commit | bd2b3f29594c50d7c5bd864d9af05d440394ee82 (patch) | |
tree | 1e8e49fe9d346d7ca869dc6e5954195be0e94123 | |
parent | ad342631f13d40aa787b9e5aaf4800f10d6c3647 (diff) | |
download | op-kernel-dev-bd2b3f29594c50d7c5bd864d9af05d440394ee82.zip op-kernel-dev-bd2b3f29594c50d7c5bd864d9af05d440394ee82.tar.gz |
logfs: fix logfs_seek_hole()
logfs_seek_hole(inode, 0x200) would crap itself if the inode contained
just 0x1ff (or fewer) blocks.
Signed-off-by: Joern Engel <joern@logfs.org>
-rw-r--r-- | fs/logfs/readwrite.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/fs/logfs/readwrite.c b/fs/logfs/readwrite.c index 8c663a5..e37cee3 100644 --- a/fs/logfs/readwrite.c +++ b/fs/logfs/readwrite.c @@ -892,6 +892,8 @@ u64 logfs_seek_hole(struct inode *inode, u64 bix) return bix; else if (li->li_data[INDIRECT_INDEX] & LOGFS_FULLY_POPULATED) bix = maxbix(li->li_height); + else if (bix >= maxbix(li->li_height)) + return bix; else { bix = seek_holedata_loop(inode, bix, 0); if (bix < maxbix(li->li_height)) |