Despite the fact that cloned rpc clients won't have the cl_autobind flag
set, they may still find themselves calling rpcb_getport_async(). For this
to happen, it suffices for a _parent_ rpc_clnt to use autobinding, in which
case any clone may find itself triggering the !xprt_bound() case in
call_bind().
The correct fix for this is to walk back up the tree of cloned rpc clients,
in order to find the parent that 'owns' the transport, either because it
has clnt->cl_autobind set, or because it originally created the
transport...
Thanks for the note Daniel. I just wanted to add that this patch is also in the upcoming Jaunty kernel.
ogasawara@emiko:~$ apt-cache policy linux-image- 2.6.28- 3-generic 2.6.28- 3-generic: archive. ubuntu. com jaunty/main Packages dpkg/status
linux-image-
Installed: 2.6.28-3.4
Candidate: 2.6.28-3.4
Version table:
*** 2.6.28-3.4 0
500 http://
100 /var/lib/
ogasawara@ yoji:~/ ubuntu- jaunty$ git log 9a4bd29fe8f6d3f 015fe1c8e5450eb 62cfebfcc9 015fe1c8e5450eb 62cfebfcc9
commit 9a4bd29fe8f6d3f
Author: Trond Myklebust <email address hidden>
Date: Fri Oct 3 16:48:34 2008 -0400
SUNRPC: Fix autobind on cloned rpc clients
Despite the fact that cloned rpc clients won't have the cl_autobind flag async() . For this
set, they may still find themselves calling rpcb_getport_
to happen, it suffices for a _parent_ rpc_clnt to use autobinding, in which
case any clone may find itself triggering the !xprt_bound() case in
call_bind().
The correct fix for this is to walk back up the tree of cloned rpc clients,
in order to find the parent that 'owns' the transport, either because it
has clnt->cl_autobind set, or because it originally created the
transport...
Signed-off-by: Trond Myklebust <email address hidden>