Commit cf834027 authored by Trond Myklebust's avatar Trond Myklebust

NFS: Fix excessive attribute revalidation in nfs_execute_ok()

When nfs_update_inode() sets NFS_INO_INVALID_ACCESS it is a sign that
we want to revalidate the access cache, not the inode attributes.
In fact we only want to revalidate here if we see that the mode bits
are invalid, so check for NFS_INO_INVALID_OTHER instead.
Reported-by: default avatarOlga Kornievskaia <aglo@umich.edu>
Signed-off-by: default avatarTrond Myklebust <trond.myklebust@hammerspace.com>
parent 7be7b3ca
...@@ -2500,7 +2500,7 @@ static int nfs_execute_ok(struct inode *inode, int mask) ...@@ -2500,7 +2500,7 @@ static int nfs_execute_ok(struct inode *inode, int mask)
struct nfs_server *server = NFS_SERVER(inode); struct nfs_server *server = NFS_SERVER(inode);
int ret = 0; int ret = 0;
if (nfs_check_cache_invalid(inode, NFS_INO_INVALID_ACCESS)) { if (nfs_check_cache_invalid(inode, NFS_INO_INVALID_OTHER)) {
if (mask & MAY_NOT_BLOCK) if (mask & MAY_NOT_BLOCK)
return -ECHILD; return -ECHILD;
ret = __nfs_revalidate_inode(server, inode); ret = __nfs_revalidate_inode(server, inode);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment