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