aboutsummaryrefslogtreecommitdiffstats
path: root/fs/xfs/xfs_iops.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/xfs/xfs_iops.c')
-rw-r--r--fs/xfs/xfs_iops.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/fs/xfs/xfs_iops.c b/fs/xfs/xfs_iops.c
index a3ed3c811dfa..138fb36ca875 100644
--- a/fs/xfs/xfs_iops.c
+++ b/fs/xfs/xfs_iops.c
@@ -1031,13 +1031,17 @@ xfs_vn_setattr(
1031 1031
1032 if (iattr->ia_valid & ATTR_SIZE) { 1032 if (iattr->ia_valid & ATTR_SIZE) {
1033 struct xfs_inode *ip = XFS_I(d_inode(dentry)); 1033 struct xfs_inode *ip = XFS_I(d_inode(dentry));
1034 uint iolock = XFS_IOLOCK_EXCL; 1034 uint iolock;
1035
1036 xfs_ilock(ip, XFS_MMAPLOCK_EXCL);
1037 iolock = XFS_IOLOCK_EXCL | XFS_MMAPLOCK_EXCL;
1035 1038
1036 error = xfs_break_layouts(d_inode(dentry), &iolock); 1039 error = xfs_break_layouts(d_inode(dentry), &iolock);
1037 if (error) 1040 if (error) {
1041 xfs_iunlock(ip, XFS_MMAPLOCK_EXCL);
1038 return error; 1042 return error;
1043 }
1039 1044
1040 xfs_ilock(ip, XFS_MMAPLOCK_EXCL);
1041 error = xfs_vn_setattr_size(dentry, iattr); 1045 error = xfs_vn_setattr_size(dentry, iattr);
1042 xfs_iunlock(ip, XFS_MMAPLOCK_EXCL); 1046 xfs_iunlock(ip, XFS_MMAPLOCK_EXCL);
1043 } else { 1047 } else {