diff options
author | Eric Sandeen <sandeen@sgi.com> | 2005-11-02 04:07:34 (GMT) |
---|---|---|
committer | Nathan Scott <nathans@sgi.com> | 2005-11-02 04:07:34 (GMT) |
commit | 374e2ac33724d1dd432b6c75f9b1adf715c2add7 (patch) | |
tree | 385de6cc3d0d1b0f32936f33573288a14b0ce2ba /fs/xfs/xfs_vnodeops.c | |
parent | 4750ddb0ba781006f149fdd87bbe997cb8c07e2e (diff) | |
download | linux-374e2ac33724d1dd432b6c75f9b1adf715c2add7.tar.xz |
[XFS] Prevent data corruption on extending truncate case from cxfs client
SGI-PV: 942439
SGI-Modid: xfs-linux:xfs-kern:200152a
Signed-off-by: Eric Sandeen <sandeen@sgi.com>
Signed-off-by: Nathan Scott <nathans@sgi.com>
Diffstat (limited to 'fs/xfs/xfs_vnodeops.c')
-rw-r--r-- | fs/xfs/xfs_vnodeops.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/xfs/xfs_vnodeops.c b/fs/xfs/xfs_vnodeops.c index 5bf9b2a..b564c1b 100644 --- a/fs/xfs/xfs_vnodeops.c +++ b/fs/xfs/xfs_vnodeops.c @@ -626,8 +626,10 @@ xfs_setattr( */ if (mask & XFS_AT_SIZE) { code = 0; - if (vap->va_size > ip->i_d.di_size) + if ((vap->va_size > ip->i_d.di_size) && + (flags & ATTR_NOSIZETOK) == 0) { code = xfs_igrow_start(ip, vap->va_size, credp); + } xfs_iunlock(ip, XFS_ILOCK_EXCL); if (!code) code = xfs_itruncate_data(ip, vap->va_size); |