summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2006-03-20 13:44:06 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2006-03-20 13:44:06 -0500
commit755c1e20cd2ad56e5c567fa05769eb98a3eef72b (patch)
treeafc643f89b342011af6a14ee24b999f9106f6c2b
parent7bab377fcb495ee2e5a1cd69d235f8d84c76e3af (diff)
downloadlinux-755c1e20cd2ad56e5c567fa05769eb98a3eef72b.tar.gz
linux-755c1e20cd2ad56e5c567fa05769eb98a3eef72b.tar.bz2
linux-755c1e20cd2ad56e5c567fa05769eb98a3eef72b.zip
NFS: writes should not clobber utimes() calls
Ensure that we flush out writes in the case when someone calls utimes() in order to set the file times. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
-rw-r--r--fs/nfs/inode.c8
1 files changed, 3 insertions, 5 deletions
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c
index 8d5b6691ae3d..5746dc841a6c 100644
--- a/fs/nfs/inode.c
+++ b/fs/nfs/inode.c
@@ -859,11 +859,9 @@ nfs_setattr(struct dentry *dentry, struct iattr *attr)
lock_kernel();
nfs_begin_data_update(inode);
- /* Write all dirty data if we're changing file permissions or size */
- if ((attr->ia_valid & (ATTR_MODE|ATTR_UID|ATTR_GID|ATTR_SIZE)) != 0) {
- filemap_write_and_wait(inode->i_mapping);
- nfs_wb_all(inode);
- }
+ /* Write all dirty data */
+ filemap_write_and_wait(inode->i_mapping);
+ nfs_wb_all(inode);
/*
* Return any delegations if we're going to change ACLs
*/