NFS client patches for Linux 2.6.26-rc9

The following set of patches fix known issues with the 2.6.26-rc9 NFS client code, and significantly enhance the support for NFSv4.

linux-2.6.26-000-use_correct_xdr_encoding_procedure_for_rpcbind_set_unset.dif:

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>

linux-2.6.26-001-introduce_a_specific_rpcb_create_for_contacting_localhost.dif:

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>

linux-2.6.26-002-none_of_rpcb_create_s_callers_wants_a_privileged_source_port.dif:

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>

linux-2.6.26-003-refactor_rpcb_register_to_make_rpcbindv4_support_easier.dif:

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>

linux-2.6.26-004-introduce_new_rpc_task_flag_that_fails_requests_on_xprt_disconnect.dif:

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>

linux-2.6.26-005-quickly_detect_missing_portmapper_during_rpc_service_registration.dif:

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>

linux-2.6.26-006-support_registering_ipv6_interfaces_with_local_rpcbind_daemon.dif:

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>

[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory   -  
[TXT]linux-2.6.26-000-use..>2008-07-07 18:23 1.5K 
[TXT]linux-2.6.26-001-int..>2008-07-07 18:23 2.8K 
[TXT]linux-2.6.26-002-non..>2008-07-07 18:23 2.2K 
[TXT]linux-2.6.26-003-ref..>2008-07-07 18:23 2.7K 
[TXT]linux-2.6.26-004-int..>2008-07-07 18:23 2.1K 
[TXT]linux-2.6.26-005-qui..>2008-07-07 18:23 2.8K 
[TXT]linux-2.6.26-006-sup..>2008-07-07 18:23 9.3K 
[   ]series 2008-07-07 18:23 651  

Apache/2.4.6 (CentOS) OpenSSL/1.0.2k-fips PHP/5.4.16 mod_perl/2.0.11 Perl/v5.16.3 Server at linux-nfs.org Port 80