|
@@ -798,10 +798,8 @@ static int f2fs_write_data_page(struct page *page,
|
|
|
* this page does not have to be written to disk.
|
|
|
*/
|
|
|
offset = i_size & (PAGE_CACHE_SIZE - 1);
|
|
|
- if ((page->index >= end_index + 1) || !offset) {
|
|
|
- inode_dec_dirty_dents(inode);
|
|
|
+ if ((page->index >= end_index + 1) || !offset)
|
|
|
goto out;
|
|
|
- }
|
|
|
|
|
|
zero_user_segment(page, offset, PAGE_CACHE_SIZE);
|
|
|
write:
|
|
@@ -810,7 +808,6 @@ write:
|
|
|
|
|
|
/* Dentry blocks are controlled by checkpoint */
|
|
|
if (S_ISDIR(inode->i_mode)) {
|
|
|
- inode_dec_dirty_dents(inode);
|
|
|
err = do_write_data_page(page, &fio);
|
|
|
goto done;
|
|
|
}
|
|
@@ -832,15 +829,14 @@ done:
|
|
|
|
|
|
clear_cold_data(page);
|
|
|
out:
|
|
|
+ inode_dec_dirty_dents(inode);
|
|
|
unlock_page(page);
|
|
|
if (need_balance_fs)
|
|
|
f2fs_balance_fs(sbi);
|
|
|
return 0;
|
|
|
|
|
|
redirty_out:
|
|
|
- wbc->pages_skipped++;
|
|
|
- account_page_redirty(page);
|
|
|
- set_page_dirty(page);
|
|
|
+ redirty_page_for_writepage(wbc, page);
|
|
|
return AOP_WRITEPAGE_ACTIVATE;
|
|
|
}
|
|
|
|