10 Oct, 2007
13 commits
-
This patch makes the needlessly global struct rpcb_program static.
Signed-off-by: Adrian Bunk
Signed-off-by: Trond Myklebust -
Instead of an { address family, raw IP protocol number }-tuple, use the
newly-defined RPC identifier when creating clients in the upper layers.Signed-off-by: Tom Talpey
Signed-off-by: Trond Myklebust -
SUNRPC: add EXPORT_SYMBOL_GPL for generic transport functions
As a preface to allowing arbitrary transport modules to be loaded
dynamically, add EXPORT_SYMBOL_GPL for all generic transport functions
that a transport implementation might want to use.Signed-off-by: Chuck Lever
Acked-by: Tom TalpeySigned-off-by: Trond Myklebust
-
The rpcbind (v3+) netid is provided by each RPC client transport. This fixes
an omission in IPv6 rpcbind client support, and enables future extension.Signed-off-by: Tom Talpey
Signed-off-by: Trond Myklebust -
Move the TCP/UDP rpcbind netid's from the rpcbind client to a global header.
Signed-off-by: Tom Talpey
Signed-off-by: Trond Myklebust -
Add more new error code processing to the kernel's rpcbind client
and to call_bind_status() to distinguish two cases:Case 1: the remote has replied that the program/version tuple is not
registered (returns EACCES)Case 2: retry with a lesser rpcbind version (rpcb now returns EPFNOSUPPORT)
This change allows more specific error processing for each of these two
cases. We now fail case 2 instead of retrying... it's a server
configuration error not to support even rpcbind version 2. And don't
expose this new error code to user land -- convert it to EIO before
failing the RPC.Signed-off-by: Chuck Lever
Signed-off-by: Trond Myklebust -
Add new error code processing to the kernel's rpcbind client and to
call_bind_status() to distinguish two cases:Case 1: the remote has replied that the program/version tuple is not
registered (returns -EACCES)Case 2: another process is already in the middle of binding on this
transport (now returns -EAGAIN)This change allows more specific retry processing for each of these two
cases.Signed-off-by: Chuck Lever
Signed-off-by: Trond Myklebust -
When a server returns a bad rpcbind reply, make rpcbind client recovery logic
retry with an older protocol version. Older versions are more likely to work
correctly.Signed-off-by: Chuck Lever
Signed-off-by: Trond Myklebust -
Add better sanity checking of server replies to the GETVERSADDR reply
decoder. Change the error return code: EIO is what other XDR decoding
routines return if there is a failure while decoding.Signed-off-by: Chuck Lever
Signed-off-by: Trond Myklebust -
Noticed by Tom Talpey :
OBTW, there's a nit on that memcpy, too. The r_addr is an array, so
memcpy(&map->r_addr
is passing the address of the array as a char **. It's the same as
map->r_addr, but technically the wrong type.Signed-off-by: Chuck Lever
Signed-off-by: Trond Myklebust -
Fix some problems with rpcbind v3 and v4 queries from the in-kernel rpcbind
client:1. The r_addr argument must be a full universal address, not just an IP
address, and2. The universal address in r_addr is the address of the remote rpcbind
server, not the RPC service being requestedThis addresses bugzilla.kernel.org report 8891 for 2.6.23-rc and greater.
In addition, if the rpcbind client is unable to start the rpcbind request,
make sure not to leak the xprt.Signed-off-by: Chuck Lever
-
Prepare for adding IPv6 support to the RPC client by adding IPv6
capabilities to rpcbind. Note that this is support on the query side
only; registering IPv6 addresses with the local portmapper will come
later.Note we have to take care not to fall back to using version 2 of the
rpcbind protocol if we're dealing with IPv6 address. Version 2 doesn't
support IPv6 at all.Signed-off-by: Chuck Lever
Cc: Aurelien Charbon
Signed-off-by: Trond Myklebust -
Signed-off-by: Chuck Lever
Signed-off-by: Trond Myklebust
11 Jul, 2007
5 commits
-
Clean up, for consistency. Rename rpcb_getport as rpcb_getport_async, to
match the naming scheme of rpcb_getport_sync.Signed-off-by: Chuck Lever
Signed-off-by: Trond Myklebust -
In preparation for handling NFS mount option parsing in the kernel,
rename rpcb_getport_external as rpcb_get_port_sync, and make it available
always (instead of only when CONFIG_ROOT_NFS is enabled).Signed-off-by: Chuck Lever
Signed-off-by: Trond Myklebust -
This allows NFS mount requests and RPC re-binding to be interruptible if the
server isn't responding.Signed-off-by: Chuck Lever
Signed-off-by: Trond Myklebust -
The kref now does most of what cl_count + cl_user used to do. The only
remaining role for cl_count is to tell us if we are in a 'shutdown'
phase. We can provide that information using a single bit field instead
of a full atomic counter.Also rename rpc_destroy_client() to rpc_close_client(), which reflects
better what its role is these days.Signed-off-by: Trond Myklebust
-
Replace it with explicit calls to rpc_shutdown_client() or
rpc_destroy_client() (for the case of asynchronous calls).Signed-off-by: Trond Myklebust
01 May, 2007
1 commit
-
Introduce a replacement for the in-kernel portmapper client that supports
all 3 versions of the rpcbind protocol. This code is not used yet.Original code by Groupe Bull updated for the latest kernel, with multiple
bug fixes.Note that rpcb_clnt.c does not yet support registering via versions 3 and
4 of the rpcbind protocol. That is planned for a later patch.Signed-off-by: Chuck Lever
Signed-off-by: Trond Myklebust