Commit 9a4cbc9e authored by Chao Yu's avatar Chao Yu Committed by Jaegeuk Kim

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: default avatarChao Yu <chao2.yu@samsung.com>
Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent 41214b3c
...@@ -1275,6 +1275,7 @@ int sync_node_pages(struct f2fs_sb_info *sbi, nid_t ino, ...@@ -1275,6 +1275,7 @@ int sync_node_pages(struct f2fs_sb_info *sbi, nid_t ino,
* If an fsync mode, * If an fsync mode,
* we should not skip writing node pages. * we should not skip writing node pages.
*/ */
lock_node:
if (ino && ino_of_node(page) == ino) if (ino && ino_of_node(page) == ino)
lock_page(page); lock_page(page);
else if (!trylock_page(page)) else if (!trylock_page(page))
...@@ -1298,7 +1299,7 @@ int sync_node_pages(struct f2fs_sb_info *sbi, nid_t ino, ...@@ -1298,7 +1299,7 @@ int sync_node_pages(struct f2fs_sb_info *sbi, nid_t ino,
clear_inline_node(page); clear_inline_node(page);
unlock_page(page); unlock_page(page);
flush_inline_data(sbi, ino_of_node(page)); flush_inline_data(sbi, ino_of_node(page));
continue; goto lock_node;
} }
f2fs_wait_on_page_writeback(page, NODE, true); f2fs_wait_on_page_writeback(page, NODE, true);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment