Browse Source

NFSv4: Ensure the inode is clean when we set a delegation

If there are attributes that are still invalid when we set a delegation,
then we need to set the NFS_INO_REVAL_FORCED flag.

Signed-off-by: Trond Myklebust <trond.myklebust@hammerspace.com>
Trond Myklebust 7 years ago
parent
commit
97c2c17af9
1 changed files with 4 additions and 0 deletions
  1. 4 0
      fs/nfs/delegation.c

+ 4 - 0
fs/nfs/delegation.c

@@ -404,6 +404,10 @@ int nfs_inode_set_delegation(struct inode *inode, struct rpc_cred *cred,
 
 
 	trace_nfs4_set_delegation(inode, type);
 	trace_nfs4_set_delegation(inode, type);
 
 
+	spin_lock(&inode->i_lock);
+	if (NFS_I(inode)->cache_validity & (NFS_INO_INVALID_ATTR|NFS_INO_INVALID_ATIME))
+		NFS_I(inode)->cache_validity |= NFS_INO_REVAL_FORCED;
+	spin_unlock(&inode->i_lock);
 out:
 out:
 	spin_unlock(&clp->cl_lock);
 	spin_unlock(&clp->cl_lock);
 	if (delegation != NULL)
 	if (delegation != NULL)