diff options
Diffstat (limited to 'fs/ocfs2/file.c')
| -rw-r--r-- | fs/ocfs2/file.c | 8 | 
1 files changed, 6 insertions, 2 deletions
diff --git a/fs/ocfs2/file.c b/fs/ocfs2/file.c index 54d7843c0211..fc5f780fa235 100644 --- a/fs/ocfs2/file.c +++ b/fs/ocfs2/file.c @@ -476,10 +476,11 @@ int ocfs2_truncate_file(struct inode *inode,  	 * greater than page size, so we have to truncate them  	 * anyway.  	 */ -	unmap_mapping_range(inode->i_mapping, new_i_size + PAGE_SIZE - 1, 0, 1); -	truncate_inode_pages(inode->i_mapping, new_i_size);  	if (OCFS2_I(inode)->ip_dyn_features & OCFS2_INLINE_DATA_FL) { +		unmap_mapping_range(inode->i_mapping, +				    new_i_size + PAGE_SIZE - 1, 0, 1); +		truncate_inode_pages(inode->i_mapping, new_i_size);  		status = ocfs2_truncate_inline(inode, di_bh, new_i_size,  					       i_size_read(inode), 1);  		if (status) @@ -498,6 +499,9 @@ int ocfs2_truncate_file(struct inode *inode,  		goto bail_unlock_sem;  	} +	unmap_mapping_range(inode->i_mapping, new_i_size + PAGE_SIZE - 1, 0, 1); +	truncate_inode_pages(inode->i_mapping, new_i_size); +  	status = ocfs2_commit_truncate(osb, inode, di_bh);  	if (status < 0) {  		mlog_errno(status);  |