Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 19c9c466 authored by Jaegeuk Kim's avatar Jaegeuk Kim
Browse files

f2fs: do not skip latest inode information



In f2fs_sync_file, if there is no written appended writes, it skips
to write its node blocks.
But, if there is up-to-date inode page, we should write it to update
its metadata during the roll-forward recovery.

Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent 441ac5cb
Loading
Loading
Loading
Loading
+10 −1
Original line number Diff line number Diff line
@@ -169,12 +169,21 @@ int f2fs_sync_file(struct file *file, loff_t start, loff_t end, int datasync)
	 */
	if (!is_inode_flag_set(fi, FI_APPEND_WRITE) &&
			!exist_written_data(sbi, ino, APPEND_INO)) {
		struct page *i = find_get_page(NODE_MAPPING(sbi), ino);

		/* But we need to avoid that there are some inode updates */
		if ((i && PageDirty(i)) || need_inode_block_update(sbi, ino)) {
			f2fs_put_page(i, 0);
			goto go_write;
		}
		f2fs_put_page(i, 0);

		if (is_inode_flag_set(fi, FI_UPDATE_WRITE) ||
				exist_written_data(sbi, ino, UPDATE_INO))
			goto flush_out;
		goto out;
	}

go_write:
	/* guarantee free sections for fsync */
	f2fs_balance_fs(sbi);