diff options
author | Trond Myklebust <trond.myklebust@hammerspace.com> | 2018-06-03 18:12:52 +0200 |
---|---|---|
committer | Trond Myklebust <trond.myklebust@hammerspace.com> | 2018-06-04 21:03:58 +0200 |
commit | 4ebe83af202284b5ff8c65cb12902fd5518c5c58 (patch) | |
tree | 003579070a9bb056ff377a62a1df0dc46077d57a /fs/nfs/inode.c | |
parent | NFS: Improve caching while holding a delegation (diff) | |
download | linux-4ebe83af202284b5ff8c65cb12902fd5518c5c58.tar.xz linux-4ebe83af202284b5ff8c65cb12902fd5518c5c58.zip |
NFS: Ignore NFS_INO_REVAL_FORCED in nfs_check_inode_attributes()
If we hold a delegation, we should not need to call
nfs_check_inode_attributes() since we already know which attributes
are valid, and which ones may still need revalidation. The state
of the NFS_INO_REVAL_FORCED flag is therefore irrelevant.
Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Diffstat (limited to '')
-rw-r--r-- | fs/nfs/inode.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 90d9fbfd82db..bc84ecaae886 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c @@ -1390,8 +1390,9 @@ static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fat unsigned long invalid = 0; - if (nfs_have_delegated_attributes(inode)) + if (NFS_PROTO(inode)->have_delegation(inode, FMODE_READ)) return 0; + /* Has the inode gone and changed behind our back? */ if ((fattr->valid & NFS_ATTR_FATTR_FILEID) && nfsi->fileid != fattr->fileid) return -ESTALE; @@ -1441,7 +1442,7 @@ static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fat invalid |= NFS_INO_INVALID_ATIME; if (invalid != 0) - nfs_set_cache_invalid(inode, invalid | NFS_INO_REVAL_FORCED); + nfs_set_cache_invalid(inode, invalid); nfsi->read_cache_jiffies = fattr->time_start; return 0; |