| .. | .. | 
|---|
| 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; | 
|---|