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

Commit 1ad13dbc authored by Trond Myklebust's avatar Trond Myklebust
Browse files

NFSv4: Optimise away forced revalidation when we know the attributes are OK



The NFS_INO_REVAL_FORCED flag needs to be set if we just got a delegation,
and we see that there might still be some ambiguity as to whether or not
our attribute or data cache are valid.
In practice, this means that a call to nfs_check_inode_attributes() will
have noticed a discrepancy between cached attributes and measured ones,
so let's move the setting of NFS_INO_REVAL_FORCED to there.

Signed-off-by: default avatarTrond Myklebust <trond.myklebust@primarydata.com>
parent 3ecefc92
Loading
Loading
Loading
Loading
+0 −4
Original line number Diff line number Diff line
@@ -391,10 +391,6 @@ int nfs_inode_set_delegation(struct inode *inode, struct rpc_cred *cred, struct
	rcu_assign_pointer(nfsi->delegation, delegation);
	delegation = NULL;

	/* Ensure we revalidate the attributes and page cache! */
	spin_lock(&inode->i_lock);
	nfsi->cache_validity |= NFS_INO_REVAL_FORCED;
	spin_unlock(&inode->i_lock);
	trace_nfs4_set_delegation(inode, res->delegation_type);

out:
+1 −1
Original line number Diff line number Diff line
@@ -1317,7 +1317,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_set_cache_invalid(inode, invalid | NFS_INO_REVAL_FORCED);

	nfsi->read_cache_jiffies = fattr->time_start;
	return 0;