Эх сурвалжийг харах

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>
Chao Yu 9 жил өмнө
parent
commit
9a4cbc9e53
1 өөрчлөгдсөн 2 нэмэгдсэн , 1 устгасан
  1. 2 1
      fs/f2fs/node.c

+ 2 - 1
fs/f2fs/node.c

@@ -1275,6 +1275,7 @@ next_step:
 			 * 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 @@ continue_unlock:
 				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);