diff options
author | Jaegeuk Kim <jaegeuk@kernel.org> | 2014-12-02 14:08:11 -0800 |
---|---|---|
committer | JP Abgrall <jpa@google.com> | 2015-03-23 10:10:26 -0700 |
commit | 8bcdc5fdb206196241dc6fc535e6d285d4985201 (patch) | |
tree | a34e995c32123c308a91df601fe641dadb379b55 /lib | |
parent | 3bcf2237352307b2e9820e635097358eda3d356e (diff) | |
download | android_external_f2fs-tools-8bcdc5fdb206196241dc6fc535e6d285d4985201.tar.gz android_external_f2fs-tools-8bcdc5fdb206196241dc6fc535e6d285d4985201.tar.bz2 android_external_f2fs-tools-8bcdc5fdb206196241dc6fc535e6d285d4985201.zip |
fsck.f2fs: readahead node blocks to speed up
This patch adds readahead system call to speed up node block reads.
Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libf2fs_io.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/libf2fs_io.c b/lib/libf2fs_io.c index 6ed45fd..afa345f 100644 --- a/lib/libf2fs_io.c +++ b/lib/libf2fs_io.c @@ -46,6 +46,15 @@ int dev_read(void *buf, __u64 offset, size_t len) return 0; } +int dev_readahead(__u64 offset, size_t len) +{ +#ifdef POSIX_FADV_WILLNEED + return posix_fadvise(config.fd, offset, len, POSIX_FADV_WILLNEED); +#else + return 0; +#endif +} + int dev_write(void *buf, __u64 offset, size_t len) { if (lseek64(config.fd, (off64_t)offset, SEEK_SET) < 0) @@ -91,6 +100,11 @@ int dev_read_blocks(void *buf, __u64 addr, __u32 nr_blks) return dev_read(buf, addr * F2FS_BLKSIZE, nr_blks * F2FS_BLKSIZE); } +int dev_reada_block(__u64 blk_addr) +{ + return dev_readahead(blk_addr * F2FS_BLKSIZE, F2FS_BLKSIZE); +} + void f2fs_finalize_device(struct f2fs_configuration *c) { /* |