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>
This commit is contained in:
parent
c80d17c55d
commit
4ebe83af20
|
@ -1390,8 +1390,9 @@ static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fat
|
||||||
unsigned long invalid = 0;
|
unsigned long invalid = 0;
|
||||||
|
|
||||||
|
|
||||||
if (nfs_have_delegated_attributes(inode))
|
if (NFS_PROTO(inode)->have_delegation(inode, FMODE_READ))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
/* Has the inode gone and changed behind our back? */
|
/* Has the inode gone and changed behind our back? */
|
||||||
if ((fattr->valid & NFS_ATTR_FATTR_FILEID) && nfsi->fileid != fattr->fileid)
|
if ((fattr->valid & NFS_ATTR_FATTR_FILEID) && nfsi->fileid != fattr->fileid)
|
||||||
return -ESTALE;
|
return -ESTALE;
|
||||||
|
@ -1441,7 +1442,7 @@ static int nfs_check_inode_attributes(struct inode *inode, struct nfs_fattr *fat
|
||||||
invalid |= NFS_INO_INVALID_ATIME;
|
invalid |= NFS_INO_INVALID_ATIME;
|
||||||
|
|
||||||
if (invalid != 0)
|
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;
|
nfsi->read_cache_jiffies = fattr->time_start;
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue