summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChao Yu <chao2.yu@samsung.com>2015-10-12 17:07:33 +0800
committerJaegeuk Kim <jaegeuk@kernel.org>2015-10-12 14:03:22 -0700
commit2db2388fcf0d880bd7160264274ed873baec4f0d (patch)
tree4cf95d3b1f2a7fb42a9b5e834edaae717e2c1a0c
parent26879fb101f28c554294eaf25ac7817a2825b180 (diff)
f2fs: readahead for free nids building
When there is no free nid in nid cache, all new node allocaters stop their job to wait for reloading of free nids, however reloading is synchronous as we will read 4 NAT pages for building nid cache, it cause the long latency. This patch tries to readahead more NAT pages with READA request flag after reloading of free nids. It helps to improve performance when users allocate node id intensively. Env: Sandisk 32G sd card time for i in `seq 1 60000`; { echo -n > /mnt/f2fs/$i; echo XXXXXX > /mnt/f2fs/$i;} Before: real 0m2.814s user 0m1.220s sys 0m1.536s After: real 0m2.711s user 0m1.136s sys 0m1.568s Signed-off-by: Chao Yu <chao2.yu@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
-rw-r--r--fs/f2fs/node.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
index ad98e35f3fcb..14f46067817a 100644
--- a/fs/f2fs/node.c
+++ b/fs/f2fs/node.c
@@ -1560,6 +1560,9 @@ static void build_free_nids(struct f2fs_sb_info *sbi)
remove_free_nid(nm_i, nid);
}
mutex_unlock(&curseg->curseg_mutex);
+
+ ra_meta_pages(sbi, NAT_BLOCK_OFFSET(nm_i->next_scan_nid),
+ FREE_NID_PAGES, META_NAT, false);
}
/*