The following set of patches fix known issues with the 2.6.26-rc9 NFS client code, and significantly enhance the support for NFSv4.
From: Chuck Lever <chuck.lever@oracle.com>
Date: Mon, 30 Jun 2008 18:38:43 -0400
SUNRPC: Use correct XDR encoding procedure for rpcbind SET/UNSET
The rpcbind versions 3 and 4 SET and UNSET procedures use the same arguments as the GETADDR procedure.
While definitely a bug, this hasn't been a problem so far since the kernel hasn't used version 3 or 4 SET and UNSET. But this will change in just a moment.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Chuck Lever <chuck.lever@oracle.com>
Date: Mon, 30 Jun 2008 18:38:51 -0400
SUNRPC: Introduce a specific rpcb_create for contacting localhost
Add rpcb_create_local() for use by rpcb_register() and upcoming IPv6 registration functions.
Ensure any errors encountered by rpcb_create_local() are properly reported.
We can also use a statically allocated constant loopback socket address instead of one allocated on the stack and initialized every time the function is called.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Chuck Lever <chuck.lever@oracle.com>
Date: Mon, 30 Jun 2008 18:38:59 -0400
SUNRPC: None of rpcb_create's callers wants a privileged source port
Clean up: Callers that required a privileged source port now use rpcb_create_local(), so we can remove the @privileged argument from rpcb_create().
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Chuck Lever <chuck.lever@oracle.com>
Date: Mon, 30 Jun 2008 18:39:07 -0400
SUNRPC: Refactor rpcb_register to make rpcbindv4 support easier
rpcbind version 4 registration will reuse part of rpcb_register, so just split it out into a separate function now.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Chuck Lever <chuck.lever@oracle.com>
Date: Mon, 30 Jun 2008 18:39:15 -0400
SUNRPC: introduce new rpc_task flag that fails requests on xprt disconnect
Introduce a new RPC client capability that allows RPC consumers to specify that if a connection cannot be established to the remote RPC service, a submitted request should fail immediately.
Useful for in-kernel RPC applications that want to connect and do just one or a handful of idempotent requests, but don't want any long waits if the remote service is not available.
No, Tom, I'm not going to call it "squishy." :-)
Note that because the UDP transport uses an unconnected socket, this new flag is a no-op for UDP.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Chuck Lever <chuck.lever@oracle.com>
Date: Mon, 30 Jun 2008 18:39:23 -0400
SUNRPC: Quickly detect missing portmapper during RPC service registration
Currently the in-kernel RPC server uses an unconnected UDP socket to contact the local user-space portmapper daemon because UDP is less overhead than TCP. However, attempting to register or unregister a local RPC service with a portmapper that isn't listening for requests results in a long timeout wait (35 seconds per request, by my calculations).
Using TCP, the absence of a listener results in an immediate ECONNREFUSED. Setting the ONESHOT flag causes the RPC client to fail RPC requests as soon as this occurs.
Therefore, this patch changes rpcb_register() to use TCP to contact the local portmapper. Starting up in-kernel RPC services should no longer hang if there is no local portmapper listening for requests.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Chuck Lever <chuck.lever@oracle.com>
Date: Mon, 30 Jun 2008 18:39:31 -0400
SUNRPC: Support registering IPv6 interfaces with local rpcbind daemon
Introduce a new API to register RPC services on IPv6 interfaces to allow the NFS server and lockd to advertise on IPv6 networks.
Unlike rpcb_register(), the new rpcb_v4_register() function uses rpcbind protocol version 4 to contact the local rpcbind daemon. The version 4 SET/UNSET procedures allow services to register address families besides AF_INET, register at specific network interfaces, and register transport protocols besides UDP and TCP. All of this functionality is exposed via the new rpcb_v4_register() kernel API.
A user-space rpcbind daemon implementation that supports version 4 of the rpcbind protocol is required in order to make use of this new API.
Note that rpcbind version 3 is sufficient to support the new rpcbind facilities listed above, but most extant implementations use version 4.
Signed-off-by: Chuck Lever <chuck.lever@oracle.com>
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Name | Last modified | Size | Description | |
---|---|---|---|---|
Parent Directory | - | |||
linux-2.6.26-000-use..> | 2008-07-07 18:23 | 1.5K | ||
linux-2.6.26-001-int..> | 2008-07-07 18:23 | 2.8K | ||
linux-2.6.26-002-non..> | 2008-07-07 18:23 | 2.2K | ||
linux-2.6.26-003-ref..> | 2008-07-07 18:23 | 2.7K | ||
linux-2.6.26-004-int..> | 2008-07-07 18:23 | 2.1K | ||
linux-2.6.26-005-qui..> | 2008-07-07 18:23 | 2.8K | ||
linux-2.6.26-006-sup..> | 2008-07-07 18:23 | 9.3K | ||
series | 2008-07-07 18:23 | 651 | ||