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 @@ 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);