diff options
Diffstat (limited to 'fs/xfs/xfs_iomap.c')
| -rw-r--r-- | fs/xfs/xfs_iomap.c | 7 | 
1 files changed, 5 insertions, 2 deletions
| diff --git a/fs/xfs/xfs_iomap.c b/fs/xfs/xfs_iomap.c index a1909bc064e9..f179bdf1644d 100644 --- a/fs/xfs/xfs_iomap.c +++ b/fs/xfs/xfs_iomap.c @@ -829,7 +829,8 @@ int  xfs_iomap_write_unwritten(  	xfs_inode_t	*ip,  	xfs_off_t	offset, -	xfs_off_t	count) +	xfs_off_t	count, +	bool		update_isize)  {  	xfs_mount_t	*mp = ip->i_mount;  	xfs_fileoff_t	offset_fsb; @@ -840,6 +841,7 @@ xfs_iomap_write_unwritten(  	xfs_trans_t	*tp;  	xfs_bmbt_irec_t imap;  	struct xfs_defer_ops dfops; +	struct inode	*inode = VFS_I(ip);  	xfs_fsize_t	i_size;  	uint		resblks;  	int		error; @@ -899,7 +901,8 @@ xfs_iomap_write_unwritten(  		i_size = XFS_FSB_TO_B(mp, offset_fsb + count_fsb);  		if (i_size > offset + count)  			i_size = offset + count; - +		if (update_isize && i_size > i_size_read(inode)) +			i_size_write(inode, i_size);  		i_size = xfs_new_eof(ip, i_size);  		if (i_size) {  			ip->i_d.di_size = i_size; |