From: Suresh Jayaraman <sjayaraman@suse.de>
To: Chuck Lever <chuck.lever@oracle.com>
Cc: Neil Brown <neilb@suse.de>,
Trond Myklebust <Trond.Myklebust@netapp.com>,
Linux NFS mailing list <linux-nfs@vger.kernel.org>
Subject: Re: [PATCH 3/3] sunrpc: reduce timeout when unregistering rpcbind registrations.
Date: Mon, 06 Jul 2009 21:38:30 +0530 [thread overview]
Message-ID: <4A52217E.9050207@suse.de> (raw)
In-Reply-To: <A8A87823-B37B-43ED-82A1-5A822C9C880C@oracle.com>
Chuck Lever wrote:
> On Jul 6, 2009, at 8:42 AM, Suresh Jayaraman wrote:
>> Chuck Lever wrote:
>>> On Jun 11, 2009, at 11:44 AM, Chuck Lever wrote:
>>>> On Jun 11, 2009, at 12:48 AM, Neil Brown wrote:
>>
>>>>
>>>>> How hard would it be to add (optional) connected UDP support? Would
>>>>> we just make the code more like the TCP version, or are there any
>>>>> gotchas that you know of that we would need to be careful of?
>>>>
>>>> The code in net/sunrpc/xprtsock.c is a bunch of transport methods,
>>>> many of which are shared between the UDP and TCP transport
>>>> capabilities. You could probably do this easily by creating a new
>>>> xprt_class structure and a new ops vector, then reuse as many UDP
>>>> methods as possible. The TCP connect method could be usable as is,
>>>> but it would be simple to copy-n-paste a new one if some variation is
>>>> required. Then, define a new XPRT_ value, and use that in
>>>> rpcb_create_local().
>>
>> I attempted a patch based on your suggestions, while the socket seems
>> to be getting the -ECONNREFUSED error, but it isn't propagating all the
>> way up (yet to debug, why)
>
> I suspect it's because a while ago Trond changed the connect logic to
> retry everything, including ECONNREFUSED.
> I've hit this problem recently as well. The kernel's NFS mount client
> needs rpcbind to recognize when a port is not active so it can stop
> retrying that port and switch to a different transport, just as
> mount.nfs does.
>
> We will need to add a mechanism to allow ECONNREFUSED to be propagated
> up the stack again. Trond suggested adding a per-RPC flag (on
> rpc_call_sync()) to do this. Connection semantics seem to me to be an
> attribute of the transport, not of a single RPC, though. And, the
> protocol where we really need this is rpcbind, which usually creates a
> transport to send just a single RPC.
>
Ah ok, good to know this.
BTW, it seems my questions on using RPC_CLNT_CREATE_ flag and using
AF_LOCAL sockets got overshadowed (seen below) by the patch. Would
making rpcbind using AF_LOCAL sockets a good idea or connected UDP still
seems a better solution?
>>
>>> I've thought about this some more...
>>>
>>> It seems to me that you might be better off using the existing UDP
>>> transport code, but adding a new RPC_CLNT_CREATE_ flag to enable
>>> connected UDP semantics. The two transports are otherwise exactly the
>>> same.
>>>
>>
>> It doesn't seem that there is a clean way of doing this. The function
>> xs_setup_udp() sets up the corresponding connect_worker function which
>> actually sets up the UDP socket. There doesn't seem to be a way to check
>> whether this flag (or a new rpc_clnt->cl_ flag) is set or not in
>> either of
>> the functions.
>>
>> OTOH, why not use AF_LOCAL sockets since it's for local communication
>> only?
>>
Thanks,
--
Suresh Jayaraman
next prev parent reply other threads:[~2009-07-06 16:08 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-05-28 6:33 [nfsd PATCH 0/3] address issues with shutdown while portmap is dead NeilBrown
[not found] ` <20090528062730.15937.70579.stgit-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2009-05-28 6:33 ` [PATCH 2/3] nfsd: optimise the starting of zero threads when none are running NeilBrown
[not found] ` <20090528063303.15937.57966.stgit-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2009-06-11 17:26 ` Jeff Layton
2009-05-28 6:33 ` [PATCH 3/3] sunrpc: reduce timeout when unregistering rpcbind registrations NeilBrown
[not found] ` <20090528063303.15937.62423.stgit-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2009-05-28 13:07 ` Tom Talpey
2009-06-11 4:49 ` Neil Brown
[not found] ` <18992.36038.267957.467326-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2009-06-11 15:02 ` Chuck Lever
2009-05-28 13:43 ` Chuck Lever
2009-06-11 4:48 ` Neil Brown
[not found] ` <18992.35996.986951.556723-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2009-06-11 15:44 ` Chuck Lever
2009-07-02 20:04 ` Chuck Lever
2009-07-06 12:42 ` Suresh Jayaraman
2009-07-06 14:30 ` Chuck Lever
2009-07-06 16:08 ` Suresh Jayaraman [this message]
2009-07-06 16:22 ` Trond Myklebust
2009-07-06 16:31 ` Chuck Lever
2009-07-06 16:40 ` Trond Myklebust
[not found] ` <1246898450.11267.12.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2009-07-06 16:57 ` Chuck Lever
2009-07-06 17:14 ` Trond Myklebust
[not found] ` <1246900456.11267.34.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2009-07-06 17:51 ` Chuck Lever
2009-07-06 17:58 ` Trond Myklebust
[not found] ` <1246903105.23966.4.camel-rJ7iovZKK19ZJLDQqaL3InhyD016LWXt@public.gmane.org>
2009-07-06 18:32 ` Chuck Lever
2009-05-28 6:33 ` [PATCH 1/3] nfsd: don't take nfsd_mutex twice when setting number of threads NeilBrown
[not found] ` <20090528063303.15937.55202.stgit-wvvUuzkyo1EYVZTmpyfIwg@public.gmane.org>
2009-06-11 17:52 ` Jeff Layton
[not found] ` <20090611135255.0fa2f728-xSBYVWDuneFaJnirhKH9O4GKTjYczspe@public.gmane.org>
2009-06-11 18:01 ` Jeff Layton
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=4A52217E.9050207@suse.de \
--to=sjayaraman@suse.de \
--cc=Trond.Myklebust@netapp.com \
--cc=chuck.lever@oracle.com \
--cc=linux-nfs@vger.kernel.org \
--cc=neilb@suse.de \
/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