diff options
Diffstat (limited to 'fs/xfs/xfs_iops.c')
| -rw-r--r-- | fs/xfs/xfs_iops.c | 14 | 
1 files changed, 6 insertions, 8 deletions
| diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c index 405a65cd9d6b..c962999a87ab 100644 --- a/fs/xfs/xfs_iops.c +++ b/fs/xfs/xfs_iops.c @@ -983,15 +983,13 @@ xfs_vn_setattr(  		struct xfs_inode	*ip = XFS_I(d_inode(dentry));  		uint			iolock = XFS_IOLOCK_EXCL; -		xfs_ilock(ip, iolock); -		error = xfs_break_layouts(d_inode(dentry), &iolock, true); -		if (!error) { -			xfs_ilock(ip, XFS_MMAPLOCK_EXCL); -			iolock |= XFS_MMAPLOCK_EXCL; +		error = xfs_break_layouts(d_inode(dentry), &iolock); +		if (error) +			return error; -			error = xfs_vn_setattr_size(dentry, iattr); -		} -		xfs_iunlock(ip, iolock); +		xfs_ilock(ip, XFS_MMAPLOCK_EXCL); +		error = xfs_setattr_size(ip, iattr); +		xfs_iunlock(ip, XFS_MMAPLOCK_EXCL);  	} else {  		error = xfs_vn_setattr_nonsize(dentry, iattr);  	} | 
