aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2007-09-29 17:25:43 -0400
committerTrond Myklebust <Trond.Myklebust@netapp.com>2007-10-09 17:19:48 -0400
commita1643a92f6de92074116922a2d2906dd33499ff4 (patch)
tree9047e929e13d48b53a8d3512ce31ac9ab6b1832d
parent3258b4fa552c4f994b5e6490a8ad88f5d7e0e648 (diff)
NFS: NFS_CACHEINV() should not test for nfs_caches_unstable()
The fact that we're in the process of modifying the inode does not mean that we should not invalidate the attribute and data caches. The defensive thing is to always invalidate when we're confronted with inode mtime/ctime or change_attribute updates that we do not immediately recognise. Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
-rw-r--r--fs/nfs/dir.c2
-rw-r--r--include/linux/nfs_fs.h6
2 files changed, 1 insertions, 7 deletions
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index 35b447d79dbe..a03ed2f85047 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -788,7 +788,7 @@ static int nfs_lookup_revalidate(struct dentry * dentry, struct nameidata *nd)
788out_zap_parent: 788out_zap_parent:
789 nfs_zap_caches(dir); 789 nfs_zap_caches(dir);
790 out_bad: 790 out_bad:
791 NFS_CACHEINV(dir); 791 nfs_mark_for_revalidate(dir);
792 if (inode && S_ISDIR(inode->i_mode)) { 792 if (inode && S_ISDIR(inode->i_mode)) {
793 /* Purge readdir caches. */ 793 /* Purge readdir caches. */
794 nfs_zap_caches(inode); 794 nfs_zap_caches(inode);
diff --git a/include/linux/nfs_fs.h b/include/linux/nfs_fs.h
index 35d61924e0b9..c947803a7ba4 100644
--- a/include/linux/nfs_fs.h
+++ b/include/linux/nfs_fs.h
@@ -240,12 +240,6 @@ static inline void nfs_mark_for_revalidate(struct inode *inode)
240 spin_unlock(&inode->i_lock); 240 spin_unlock(&inode->i_lock);
241} 241}
242 242
243static inline void NFS_CACHEINV(struct inode *inode)
244{
245 if (!nfs_caches_unstable(inode))
246 nfs_mark_for_revalidate(inode);
247}
248
249static inline int nfs_server_capable(struct inode *inode, int cap) 243static inline int nfs_server_capable(struct inode *inode, int cap)
250{ 244{
251 return NFS_SERVER(inode)->caps & cap; 245 return NFS_SERVER(inode)->caps & cap;