]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
f2fs: try to flush inode after merging inline data
authorChao Yu <chao2.yu@samsung.com>
Mon, 22 Feb 2016 10:35:46 +0000 (18:35 +0800)
committerJaegeuk Kim <jaegeuk@kernel.org>
Tue, 23 Feb 2016 05:40:02 +0000 (21:40 -0800)
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>
fs/f2fs/node.c

index 966176b4027a3b98a11a549ad9f07d06381aba43..82cde7a2117ce282f76f37744f97f2087323e91f 100644 (file)
@@ -1275,6 +1275,7 @@ int sync_node_pages(struct f2fs_sb_info *sbi, nid_t ino,
                         * 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 @@ int sync_node_pages(struct f2fs_sb_info *sbi, nid_t ino,
                                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);