Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b4b1eadf authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFS: Don't force page cache revalidations when holding a delegation



If we're holding a delegation, then we already know that our
page cache is valid.

Signed-off-by: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent e144cbcc
Loading
Loading
Loading
Loading
+10 −3
Original line number Diff line number Diff line
@@ -870,6 +870,15 @@ static int nfs_invalidate_mapping(struct inode *inode, struct address_space *map
	return 0;
}

static bool nfs_mapping_need_revalidate_inode(struct inode *inode)
{
	if (nfs_have_delegated_attributes(inode))
		return false;
	return (NFS_I(inode)->cache_validity & NFS_INO_REVAL_PAGECACHE)
		|| nfs_attribute_timeout(inode)
		|| NFS_STALE(inode);
}

/**
 * nfs_revalidate_mapping - Revalidate the pagecache
 * @inode - pointer to host inode
@@ -880,9 +889,7 @@ int nfs_revalidate_mapping(struct inode *inode, struct address_space *mapping)
	struct nfs_inode *nfsi = NFS_I(inode);
	int ret = 0;

	if ((nfsi->cache_validity & NFS_INO_REVAL_PAGECACHE)
			|| nfs_attribute_cache_expired(inode)
			|| NFS_STALE(inode)) {
	if (nfs_mapping_need_revalidate_inode(inode)) {
		ret = __nfs_revalidate_inode(NFS_SERVER(inode), inode);
		if (ret < 0)
			goto out;