Re: [PATCH v3 20/38] nfsd: Migrate the stateid reference into nfs4_find_stateid_by_type()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



These look OK to me at least through this patch.

--b.

On Tue, Jul 29, 2014 at 09:34:25PM -0400, Jeff Layton wrote:
> From: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx>
> 
> Allow nfs4_find_stateid_by_type to take the stateid reference, while
> still holding the &cl->cl_lock. Necessary step toward client_mutex
> removal.
> 
> Signed-off-by: Trond Myklebust <trond.myklebust@xxxxxxxxxxxxxxx>
> ---
>  fs/nfsd/nfs4state.c | 12 ++++++------
>  1 file changed, 6 insertions(+), 6 deletions(-)
> 
> diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
> index a4a49a3b464c..653de6b14665 100644
> --- a/fs/nfsd/nfs4state.c
> +++ b/fs/nfsd/nfs4state.c
> @@ -1696,8 +1696,12 @@ find_stateid_by_type(struct nfs4_client *cl, stateid_t *t, char typemask)
>  
>  	spin_lock(&cl->cl_lock);
>  	s = find_stateid_locked(cl, t);
> -	if (s != NULL && !(typemask & s->sc_type))
> -		s = NULL;
> +	if (s != NULL) {
> +		if (typemask & s->sc_type)
> +			atomic_inc(&s->sc_count);
> +		else
> +			s = NULL;
> +	}
>  	spin_unlock(&cl->cl_lock);
>  	return s;
>  }
> @@ -3326,8 +3330,6 @@ static struct nfs4_delegation *find_deleg_stateid(struct nfs4_client *cl, statei
>  	ret = find_stateid_by_type(cl, s, NFS4_DELEG_STID);
>  	if (!ret)
>  		return NULL;
> -	/* FIXME: move into find_stateid_by_type */
> -	atomic_inc(&ret->sc_count);
>  	return delegstateid(ret);
>  }
>  
> @@ -4170,8 +4172,6 @@ nfsd4_lookup_stateid(struct nfsd4_compound_state *cstate,
>  	*s = find_stateid_by_type(cstate->clp, stateid, typemask);
>  	if (!*s)
>  		return nfserr_bad_stateid;
> -	/* FIXME: move into find_stateid_by_type */
> -	atomic_inc(&(*s)->sc_count);
>  	return nfs_ok;
>  }
>  
> -- 
> 1.9.3
> 
--
To unsubscribe from this list: send the line "unsubscribe linux-nfs" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Filesystem Development]     [Linux USB Development]     [Linux Media Development]     [Video for Linux]     [Linux NILFS]     [Linux Audio Users]     [Yosemite Info]     [Linux SCSI]

  Powered by Linux