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

Commit ca0a81b3 authored by Chao Yu's avatar Chao Yu Committed by Jaegeuk Kim
Browse files

f2fs: avoid to truncate non-updated page partially



After we call find_data_page in truncate_partial_data_page, we could not
guarantee this page is updated or not as error may occurred in lower layer.

We'd better check status of the page to avoid this no updated page be
writebacked to device.

Signed-off-by: default avatarChao Yu <chao2.yu@samsung.com>
Signed-off-by: default avatarJaegeuk Kim <jaegeuk@kernel.org>
parent 5576cd6c
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -380,13 +380,15 @@ static void truncate_partial_data_page(struct inode *inode, u64 from)
		return;

	lock_page(page);
	if (unlikely(page->mapping != inode->i_mapping)) {
		f2fs_put_page(page, 1);
		return;
	}
	if (unlikely(!PageUptodate(page) ||
			page->mapping != inode->i_mapping))
		goto out;

	f2fs_wait_on_page_writeback(page, DATA);
	zero_user(page, offset, PAGE_CACHE_SIZE - offset);
	set_page_dirty(page);

out:
	f2fs_put_page(page, 1);
}