Commit 59a06155 authored by Jaegeuk Kim's avatar Jaegeuk Kim
Browse files

f2fs: fix to wait correct block type



The inode page needs to wait NODE block io.

Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent 4e6ebf6d
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -283,8 +283,9 @@ ino_t f2fs_inode_by_name(struct inode *dir, struct qstr *qstr)
void f2fs_set_link(struct inode *dir, struct f2fs_dir_entry *de,
		struct page *page, struct inode *inode)
{
	enum page_type type = f2fs_has_inline_dentry(dir) ? NODE : DATA;
	lock_page(page);
	f2fs_wait_on_page_writeback(page, DATA);
	f2fs_wait_on_page_writeback(page, type);
	de->ino = cpu_to_le32(inode->i_ino);
	set_de_type(de, inode);
	if (!f2fs_has_inline_dentry(dir))
+2 −2
Original line number Diff line number Diff line
@@ -427,7 +427,7 @@ int f2fs_add_inline_entry(struct inode *dir, const struct qstr *name,
		goto out;
	}

	f2fs_wait_on_page_writeback(ipage, DATA);
	f2fs_wait_on_page_writeback(ipage, NODE);

	down_write(&F2FS_I(inode)->i_sem);
	page = init_inode_metadata(inode, dir, name);
@@ -472,7 +472,7 @@ void f2fs_delete_inline_entry(struct f2fs_dir_entry *dentry, struct page *page,
	int i;

	lock_page(page);
	f2fs_wait_on_page_writeback(page, DATA);
	f2fs_wait_on_page_writeback(page, NODE);

	inline_dentry = inline_data_addr(page);
	bit_pos = dentry - inline_dentry->dentry;