.. | .. |
---|
1031 | 1031 | if (page->index >= synced_i_size >> PAGE_SHIFT) { |
---|
1032 | 1032 | err = inode->i_sb->s_op->write_inode(inode, NULL); |
---|
1033 | 1033 | if (err) |
---|
1034 | | - goto out_unlock; |
---|
| 1034 | + goto out_redirty; |
---|
1035 | 1035 | /* |
---|
1036 | 1036 | * The inode has been written, but the write-buffer has |
---|
1037 | 1037 | * not been synchronized, so in case of an unclean |
---|
.. | .. |
---|
1059 | 1059 | if (i_size > synced_i_size) { |
---|
1060 | 1060 | err = inode->i_sb->s_op->write_inode(inode, NULL); |
---|
1061 | 1061 | if (err) |
---|
1062 | | - goto out_unlock; |
---|
| 1062 | + goto out_redirty; |
---|
1063 | 1063 | } |
---|
1064 | 1064 | |
---|
1065 | 1065 | return do_writepage(page, len); |
---|
1066 | | - |
---|
| 1066 | +out_redirty: |
---|
| 1067 | + /* |
---|
| 1068 | + * redirty_page_for_writepage() won't call ubifs_dirty_inode() because |
---|
| 1069 | + * it passes I_DIRTY_PAGES flag while calling __mark_inode_dirty(), so |
---|
| 1070 | + * there is no need to do space budget for dirty inode. |
---|
| 1071 | + */ |
---|
| 1072 | + redirty_page_for_writepage(wbc, page); |
---|
1067 | 1073 | out_unlock: |
---|
1068 | 1074 | unlock_page(page); |
---|
1069 | 1075 | return err; |
---|