diff options
author | Trond Myklebust <trond.myklebust@primarydata.com> | 2018-03-20 16:53:32 -0400 |
---|---|---|
committer | Anna Schumaker <Anna.Schumaker@Netapp.com> | 2018-04-10 16:06:22 -0400 |
commit | d943f2dd8dba1ecde2de053500a6533e39577bfc (patch) | |
tree | 7b9e767115531416e379eab1374a3b25fbf943b6 /fs | |
parent | 16e143751727471f9a565515344196693bbc8762 (diff) | |
download | linux-stable-d943f2dd8dba1ecde2de053500a6533e39577bfc.tar.gz linux-stable-d943f2dd8dba1ecde2de053500a6533e39577bfc.tar.bz2 linux-stable-d943f2dd8dba1ecde2de053500a6533e39577bfc.zip |
NFSv4: Ignore change attribute invalidations if we hold a delegation
Don't bother even recording an invalid change attribute if we hold a
delegation since we already know the state of our attribute cache.
We can rely on the fact that we will pick up a copy from the server
when we return the delegation.
Signed-off-by: Trond Myklebust <trond.myklebust@primarydata.com>
Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
Diffstat (limited to 'fs')
-rw-r--r-- | fs/nfs/inode.c | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/fs/nfs/inode.c b/fs/nfs/inode.c index 23880f45c1e4..a2c5d4ad4535 100644 --- a/fs/nfs/inode.c +++ b/fs/nfs/inode.c @@ -200,7 +200,10 @@ bool nfs_check_cache_invalid(struct inode *inode, unsigned long flags) static void nfs_set_cache_invalid(struct inode *inode, unsigned long flags) { struct nfs_inode *nfsi = NFS_I(inode); + bool have_delegation = nfs_have_delegated_attributes(inode); + if (have_delegation) + flags &= ~(NFS_INO_INVALID_CHANGE|NFS_INO_REVAL_PAGECACHE); if (inode->i_mapping->nrpages == 0) flags &= ~NFS_INO_INVALID_DATA; nfsi->cache_validity |= flags; |