public inbox for linux-nfs@vger.kernel.org
 help / color / mirror / Atom feed
From: "J. Bruce Fields" <bfields@fieldses.org>
To: Chuck Lever <chuck.lever@oracle.com>
Cc: NFSv3 list <linux-nfs@vger.kernel.org>,
	Trond Myklebust <Trond.Myklebust@netapp.com>
Subject: Re: [PATCH 07/11] SUNRPC: Use a cached RPC client and transport for rpcbind upcalls
Date: Fri, 20 Nov 2009 17:36:44 -0500	[thread overview]
Message-ID: <20091120223644.GB13840@fieldses.org> (raw)
In-Reply-To: <8EA5EB4E-A6EF-4501-AE13-856105142F9A@oracle.com>

On Fri, Nov 20, 2009 at 05:24:43PM -0500, Chuck Lever wrote:
> On Nov 20, 2009, at 5:05 PM, J. Bruce Fields wrote:
>> On Fri, Nov 20, 2009 at 04:50:34PM -0500, Chuck Lever wrote:
>>> On Nov 20, 2009, at 3:18 PM, Trond Myklebust wrote:
>>>> On Thu, 2009-11-05 at 13:23 -0500, Chuck Lever wrote:
>>>>> +	static DEFINE_SPINLOCK(rpcb_create_local_lock);
>>>>> +	struct rpc_clnt *clnt, *clnt4;
>>>>> +	int result = 0;
>>>>> +
>>>>> +	spin_lock(&rpcb_create_local_lock);
>>>>> +	if (rpcb_local_clnt)
>>>>> +		goto out;
>>>>> +
>>>>> +	clnt = rpc_create(&args);
>>>>> +	if (IS_ERR(clnt)) {
>>>>> +		result = -PTR_ERR(clnt);
>>>>> +		goto out;
>>>>> +	}
>>>>>
>>>>> -	return rpc_create(&args);
>>>>> +	clnt4 = rpc_bind_new_program(clnt, &rpcb_program, RPCBVERS_4);
>>>>> +	if (IS_ERR(clnt4)) {
>>>>> +		result = -PTR_ERR(clnt4);
>>>>> +		rpc_shutdown_client(clnt);
>>>>> +		goto out;
>>>>> +	}
>>>>> +
>>>>> +	rpcb_local_clnt = clnt;
>>>>> +	rpcb_local_clnt4 = clnt4;
>>>>> +
>>>>> +out:
>>>>> +	spin_unlock(&rpcb_create_local_lock);
>>>>> +	return result;
>>>>> }
>>>>
>>>> You can't have tested this. At the very least you cannot have done  
>>>> so
>>>> with spinlock debugging enabled...
>>>
>>> I moved the rpcb_create_local_lock spinlock out of the function,  
>>> enabled
>>> every spinlock checkbox I could under kernel hacking,
>>
>> Including CONFIG_DEBUG_SPINLOCK_SLEEP?
>
> Yes.  I even rebuilt the kernel under test from scratch.
>
>>> and gave the guest
>>> 2 CPUs.  The spinlock checker reported a problem almost immediately  
>>> with
>>> XFS (even with just one virtual CPU), so I know it's enabled and  
>>> working.
>>>
>>> I can't reproduce any problems with the rpcbind upcall here.  Do you
>>> have anything more specific?
>>
>> Isn't there an rpc ping in rpc_bind_new_program?
>
> Hrm, I suppose there is.  That's weird, clearly I didn't see the  
> rpc_ping() call, even though I was looking for it when I wrote this.  A 
> GFP_KERNEL memory allocation can sleep too, can't it?

Yes.  I'd be really curious to know how that got through--if
CONFIG_DEBUG_SPINLOCK_SLEEP can't catch a case that cut-and-dried, then
it's totally broken....

--b.

  reply	other threads:[~2009-11-20 22:36 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-11-05 18:22 [PATCH 00/11] For 2.6.33 Chuck Lever
     [not found] ` <20091105181924.2796.9313.stgit-RytpoXr2tKZ9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
2009-11-05 18:22   ` [PATCH 01/11] SUNRPC: Display compressed (shorthand) IPv6 presentation addresses Chuck Lever
2009-11-05 18:22   ` [PATCH 02/11] NFS: Display compressed (shorthand) IPv6 in /proc/mounts Chuck Lever
2009-11-05 18:22   ` [PATCH 03/11] NFS: Revert default r/wsize behavior Chuck Lever
2009-11-05 18:22   ` [PATCH 04/11] SUNRPC: Check explicitly for tk_status == 0 in call_transmit_status() Chuck Lever
2009-11-05 18:23   ` [PATCH 05/11] SUNRPC: Allow RPCs to fail quickly if the server is unreachable Chuck Lever
2009-11-05 18:23   ` [PATCH 06/11] SUNRPC: Simplify synopsis of rpcb_local_clnt() Chuck Lever
2009-11-05 18:23   ` [PATCH 07/11] SUNRPC: Use a cached RPC client and transport for rpcbind upcalls Chuck Lever
     [not found]     ` <20091105182319.2796.62305.stgit-RytpoXr2tKZ9HhUboXbp9zCvJB+x5qRC@public.gmane.org>
2009-11-20 20:18       ` Trond Myklebust
2009-11-20 20:19         ` Chuck Lever
2009-11-20 21:50         ` Chuck Lever
2009-11-20 22:05           ` J. Bruce Fields
2009-11-20 22:24             ` Chuck Lever
2009-11-20 22:36               ` J. Bruce Fields [this message]
2009-11-20 23:47                 ` Trond Myklebust
2009-11-05 18:23   ` [PATCH 08/11] SUNRPC: Use TCP for local " Chuck Lever
2009-11-05 18:23   ` [PATCH 09/11] SUNRPC: Use soft connects for autobinding over TCP Chuck Lever
2009-11-05 18:23   ` [PATCH 10/11] SUNRPC: Use soft connect semantics when performing RPC ping Chuck Lever
2009-11-05 18:23   ` [PATCH 11/11] SUNRPC: soft connect semantics for UDP Chuck Lever

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20091120223644.GB13840@fieldses.org \
    --to=bfields@fieldses.org \
    --cc=Trond.Myklebust@netapp.com \
    --cc=chuck.lever@oracle.com \
    --cc=linux-nfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox