summaryrefslogtreecommitdiffstats
path: root/fs/nfs/dir.c
diff options
context:
space:
mode:
authorBenjamin Herrenschmidt <benh@kernel.crashing.org>2009-03-18 13:16:30 +1100
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2009-03-18 13:16:30 +1100
commitc71327ad9f925a4ddbf24db80ce66165104c4ed0 (patch)
treea1560ddfb827d580843d2a32ba19fb0fc85490d8 /fs/nfs/dir.c
parentf507cd22035fdadd5dbb476dd05e9e7ee21c3b84 (diff)
parenta4bd6a93c3f14691c8a29e53eb04dc734b27f0db (diff)
downloadop-kernel-dev-c71327ad9f925a4ddbf24db80ce66165104c4ed0.zip
op-kernel-dev-c71327ad9f925a4ddbf24db80ce66165104c4ed0.tar.gz
Merge commit 'gcl/merge' into merge
Diffstat (limited to 'fs/nfs/dir.c')
-rw-r--r--fs/nfs/dir.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/fs/nfs/dir.c b/fs/nfs/dir.c
index e35c819..672368f 100644
--- a/fs/nfs/dir.c
+++ b/fs/nfs/dir.c
@@ -1892,8 +1892,14 @@ static int nfs_do_access(struct inode *inode, struct rpc_cred *cred, int mask)
cache.cred = cred;
cache.jiffies = jiffies;
status = NFS_PROTO(inode)->access(inode, &cache);
- if (status != 0)
+ if (status != 0) {
+ if (status == -ESTALE) {
+ nfs_zap_caches(inode);
+ if (!S_ISDIR(inode->i_mode))
+ set_bit(NFS_INO_STALE, &NFS_I(inode)->flags);
+ }
return status;
+ }
nfs_access_add_cache(inode, &cache);
out:
if ((mask & ~cache.mask & (MAY_READ | MAY_WRITE | MAY_EXEC)) == 0)
OpenPOWER on IntegriCloud