mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 10:40:15 +02:00 
			
		
		
		
	nfsd: make nfs4_get_existing_delegation less confusing
This doesn't "get" anything. Signed-off-by: J. Bruce Fields <bfields@redhat.com> Reviewed-by: Jeff Layton <jlayton@kernel.org>
This commit is contained in:
		
							parent
							
								
									0c911f5408
								
							
						
					
					
						commit
						68b18f5294
					
				
					 1 changed files with 9 additions and 14 deletions
				
			
		| 
						 | 
				
			
			@ -900,20 +900,16 @@ void nfs4_unhash_stid(struct nfs4_stid *s)
 | 
			
		|||
}
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * nfs4_get_existing_delegation - Discover if this delegation already exists
 | 
			
		||||
 * nfs4_delegation_exists - Discover if this delegation already exists
 | 
			
		||||
 * @clp:     a pointer to the nfs4_client we're granting a delegation to
 | 
			
		||||
 * @fp:      a pointer to the nfs4_file we're granting a delegation on
 | 
			
		||||
 *
 | 
			
		||||
 * Return:
 | 
			
		||||
 *      On success: NULL if an existing delegation was not found.
 | 
			
		||||
 *
 | 
			
		||||
 *      On error: -EAGAIN if one was previously granted to this nfs4_client
 | 
			
		||||
 *                 for this nfs4_file.
 | 
			
		||||
 *
 | 
			
		||||
 *      On success: true iff an existing delegation is found
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
nfs4_get_existing_delegation(struct nfs4_client *clp, struct nfs4_file *fp)
 | 
			
		||||
static bool
 | 
			
		||||
nfs4_delegation_exists(struct nfs4_client *clp, struct nfs4_file *fp)
 | 
			
		||||
{
 | 
			
		||||
	struct nfs4_delegation *searchdp = NULL;
 | 
			
		||||
	struct nfs4_client *searchclp = NULL;
 | 
			
		||||
| 
						 | 
				
			
			@ -946,15 +942,13 @@ nfs4_get_existing_delegation(struct nfs4_client *clp, struct nfs4_file *fp)
 | 
			
		|||
static int
 | 
			
		||||
hash_delegation_locked(struct nfs4_delegation *dp, struct nfs4_file *fp)
 | 
			
		||||
{
 | 
			
		||||
	int status;
 | 
			
		||||
	struct nfs4_client *clp = dp->dl_stid.sc_client;
 | 
			
		||||
 | 
			
		||||
	lockdep_assert_held(&state_lock);
 | 
			
		||||
	lockdep_assert_held(&fp->fi_lock);
 | 
			
		||||
 | 
			
		||||
	status = nfs4_get_existing_delegation(clp, fp);
 | 
			
		||||
	if (status)
 | 
			
		||||
		return status;
 | 
			
		||||
	if (nfs4_delegation_exists(clp, fp))
 | 
			
		||||
		return -EAGAIN;
 | 
			
		||||
	++fp->fi_delegees;
 | 
			
		||||
	refcount_inc(&dp->dl_stid.sc_count);
 | 
			
		||||
	dp->dl_stid.sc_type = NFS4_DELEG_STID;
 | 
			
		||||
| 
						 | 
				
			
			@ -4391,7 +4385,7 @@ static struct nfs4_delegation *
 | 
			
		|||
nfs4_set_delegation(struct nfs4_client *clp, struct svc_fh *fh,
 | 
			
		||||
		    struct nfs4_file *fp, struct nfs4_clnt_odstate *odstate)
 | 
			
		||||
{
 | 
			
		||||
	int status;
 | 
			
		||||
	int status = 0;
 | 
			
		||||
	struct nfs4_delegation *dp;
 | 
			
		||||
 | 
			
		||||
	if (fp->fi_had_conflict)
 | 
			
		||||
| 
						 | 
				
			
			@ -4399,7 +4393,8 @@ nfs4_set_delegation(struct nfs4_client *clp, struct svc_fh *fh,
 | 
			
		|||
 | 
			
		||||
	spin_lock(&state_lock);
 | 
			
		||||
	spin_lock(&fp->fi_lock);
 | 
			
		||||
	status = nfs4_get_existing_delegation(clp, fp);
 | 
			
		||||
	if (nfs4_delegation_exists(clp, fp))
 | 
			
		||||
		status = -EAGAIN;
 | 
			
		||||
	spin_unlock(&fp->fi_lock);
 | 
			
		||||
	spin_unlock(&state_lock);
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in a new issue