[pnfs] [PATCH] wrong hold count on clr_ref

Benny Halevy bhalevy at panasas.com
Mon Jun 4 20:06:14 EDT 2007


Marc Eshel wrote:
> From: Marc Eshel <eshel at almaden.ibm.com>
> 
> 
> ---
> 
>  fs/nfsd/nfs4callback.c |    2 +-
>  fs/nfsd/nfs4state.c    |    2 +-
>  2 files changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/fs/nfsd/nfs4callback.c b/fs/nfsd/nfs4callback.c
> index b7bc5c3..da20278 100644
> --- a/fs/nfsd/nfs4callback.c
> +++ b/fs/nfsd/nfs4callback.c
> @@ -413,7 +413,7 @@ nfs41_xdr_enc_cb_layout(struct rpc_rqst 
>  	struct nfs4_layoutrecall *args = rpc_args->args_op;
>  	struct nfs4_cb_compound_hdr hdr = {
>  		.ident = 0,
> -		.nops   = 1,
> +		.nops   = 2,

right

>  	};
>  
>  	xdr_init_encode(&xdr, &req->rq_snd_buf, p);
> diff --git a/fs/nfsd/nfs4state.c b/fs/nfsd/nfs4state.c
> index 2fe5414..e48f08d 100644
> --- a/fs/nfsd/nfs4state.c
> +++ b/fs/nfsd/nfs4state.c
> @@ -4029,7 +4029,7 @@ destroy_layoutrecall(struct kref *kref)
>  		container_of(kref, struct nfs4_layoutrecall, clr_ref);
>  	dprintk("pNFS %s: clr %p fp %p clp %p\n", __FUNCTION__, clr,
>  	        clr->clr_file, clr->clr_client);
> -	BUG_ON(!list_empty(&clr->clr_perclnt));
> +//???	BUG_ON(!list_empty(&clr->clr_perclnt));

I'm worried about doing that since you don't want to free the structure
while it's only clr_perclnt list.

>  	if (clr->clr_file)
>  		put_nfs4_file(clr->clr_file);
>  	kmem_cache_free(pnfs_layoutrecall_slab, clr);
> _______________________________________________
> pNFS mailing list
> pNFS at linux-nfs.org
> http://linux-nfs.org/cgi-bin/mailman/listinfo/pnfs


More information about the pNFS mailing list