summaryrefslogtreecommitdiffstats
path: root/fs/f2fs/node.c
diff options
context:
space:
mode:
authorChao Yu2016-02-22 11:35:46 +0100
committerJaegeuk Kim2016-02-23 06:40:02 +0100
commit9a4cbc9e5318608740e3e3e44d4d565e19ad5e74 (patch)
tree447accfc8261cd1e068dd0c55c3a029bf1784d0d /fs/f2fs/node.c
parentf2fs: show more info about superblock recovery (diff)
downloadkernel-qcow2-linux-9a4cbc9e5318608740e3e3e44d4d565e19ad5e74.tar.gz
kernel-qcow2-linux-9a4cbc9e5318608740e3e3e44d4d565e19ad5e74.tar.xz
kernel-qcow2-linux-9a4cbc9e5318608740e3e3e44d4d565e19ad5e74.zip
f2fs: try to flush inode after merging inline data
When flushing node pages, if current node page is an inline inode page, we will try to merge inline data from data page into inline inode page, then skip flushing current node page, it will decrease the number of nodes to be flushed in batch in this round, which may lead to worse performance. This patch gives a chance to flush just merged inline inode pages for performance. Signed-off-by: Chao Yu <chao2.yu@samsung.com> Signed-off-by: Jaegeuk Kim <jaegeuk@kernel.org>
Diffstat (limited to 'fs/f2fs/node.c')
-rw-r--r--fs/f2fs/node.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/f2fs/node.c b/fs/f2fs/node.c
index 966176b4027a..82cde7a2117c 100644
--- a/fs/f2fs/node.c
+++ b/fs/f2fs/node.c
@@ -1275,6 +1275,7 @@ next_step:
* If an fsync mode,
* we should not skip writing node pages.
*/
+lock_node:
if (ino && ino_of_node(page) == ino)
lock_page(page);
else if (!trylock_page(page))
@@ -1298,7 +1299,7 @@ continue_unlock:
clear_inline_node(page);
unlock_page(page);
flush_inline_data(sbi, ino_of_node(page));
- continue;
+ goto lock_node;
}
f2fs_wait_on_page_writeback(page, NODE, true);