aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/file.c
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2005-06-22 13:16:30 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2005-06-22 16:07:37 -0400
commit7d52e86274e09fce8ac8f963e3605a84d0a305a7 (patch)
treeb9ecc05bbdff94aa344f39b53756bfddbd9db123 /fs/nfs/file.c
parent951a143b3fcf15cfa9d38250b7462f821db241db (diff)
[PATCH] NFS: Cleanup of caching code, and slight optimization of writes.
Unless we're doing O_APPEND writes, we really don't care about revalidating the file length. Just make sure that we catch any page cache invalidations. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/file.c')
-rw-r--r--fs/nfs/file.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/fs/nfs/file.c b/fs/nfs/file.c
index a606708264ed..40436857ed42 100644
--- a/fs/nfs/file.c
+++ b/fs/nfs/file.c
@@ -333,9 +333,15 @@ nfs_file_write(struct kiocb *iocb, const char __user *buf, size_t count, loff_t
333 result = -EBUSY; 333 result = -EBUSY;
334 if (IS_SWAPFILE(inode)) 334 if (IS_SWAPFILE(inode))
335 goto out_swapfile; 335 goto out_swapfile;
336 result = nfs_revalidate_inode(NFS_SERVER(inode), inode); 336 /*
337 if (result) 337 * O_APPEND implies that we must revalidate the file length.
338 goto out; 338 */
339 if (iocb->ki_filp->f_flags & O_APPEND) {
340 result = nfs_revalidate_file_size(inode, iocb->ki_filp);
341 if (result)
342 goto out;
343 } else
344 nfs_revalidate_mapping(inode, iocb->ki_filp->f_mapping);
339 345
340 result = count; 346 result = count;
341 if (!count) 347 if (!count)