aboutsummaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorJaegeuk Kim <jaegeuk@kernel.org>2014-12-02 14:08:11 -0800
committerJP Abgrall <jpa@google.com>2015-03-23 10:10:26 -0700
commit8bcdc5fdb206196241dc6fc535e6d285d4985201 (patch)
treea34e995c32123c308a91df601fe641dadb379b55 /lib
parent3bcf2237352307b2e9820e635097358eda3d356e (diff)
downloadandroid_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.c14
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)
{
/*