Hi Linus, Please pull from the "nfs-for-2.6.40" branch of the repository at git pull git://git.linux-nfs.org/projects/trondmy/nfs-2.6.git nfs-for-2.6.40 This will update the following files through the appended changesets. Cheers, Trond ---- fs/nfs/delegation.c | 14 +-- fs/nfs/inode.c | 8 +- fs/nfs/nfs4proc.c | 9 +- fs/nfs/nfs4state.c | 6 +- fs/nfs/nfsroot.c | 2 +- fs/nfs/pnfs.c | 2 +- include/linux/sunrpc/msg_prot.h | 1 + include/linux/sunrpc/xprt.h | 3 +- net/sunrpc/clnt.c | 29 ++-- net/sunrpc/rpcb_clnt.c | 97 ++++++++-- net/sunrpc/svc.c | 2 + net/sunrpc/xprtsock.c | 435 +++++++++++++++++++++++++++++++++++++-- 12 files changed, 542 insertions(+), 66 deletions(-) commit 176e21ee2ec89cae8d45cf1a850ea45a45428fb8 Author: Chuck Lever <chuck.lever@xxxxxxxxxx> Date: Mon May 9 15:22:44 2011 -0400 SUNRPC: Support for RPC over AF_LOCAL transports TI-RPC introduces the capability of performing RPC over AF_LOCAL sockets. It uses this mainly for registering and unregistering local RPC services securely with the local rpcbind, but we could also conceivably use it as a generic upcall mechanism. This patch provides a client-side only implementation for the moment. We might also consider a server-side implementation to provide AF_LOCAL access to NLM (for statd downcalls, and such like). Autobinding is not supported on kernel AF_LOCAL transports at this time. Kernel ULPs must specify the pathname of the remote endpoint when an AF_LOCAL transport is created. rpcbind supports registering services available via AF_LOCAL, so the kernel could handle it with some adjustment to ->rpcbind and ->set_port. But we don't need this feature for doing upcalls via well-known named sockets. This has not been tested with ULPs that move a substantial amount of data. Thus, I can't attest to how robust the write_space and congestion management logic is. Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 559649efb9b0d248541933197bdf7b75529da457 Author: Chuck Lever <chuck.lever@xxxxxxxxxx> Date: Mon May 9 15:23:04 2011 -0400 SUNRPC: Remove obsolete comment Clean up. The documenting comment at the top of net/sunrpc/clnt.c is out of date. We adopted BSD's RTO estimation mechanism years ago. Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 7402ab19cdd5943c7dd4f3399afe3abda8077ef5 Author: Chuck Lever <chuck.lever@xxxxxxxxxx> Date: Mon May 9 15:22:55 2011 -0400 SUNRPC: Use AF_LOCAL for rpcbind upcalls As libtirpc does in user space, have our registration API try using an AF_LOCAL transport first when registering and unregistering. This means we don't chew up privileged ports, and our registration is bound to an "owner" (the effective uid of the process on the sending end of the transport). Only that "owner" may unregister the service. The kernel could probe rpcbind via an rpcbind query to determine whether rpcbind has an AF_LOCAL service. For simplicity, we use the same technique that libtirpc uses: simply fail over to network loopback if creating an AF_LOCAL transport to the well-known rpcbind service socket fails. This means we open-code the pathname of the rpcbind socket in the kernel. For now we have to do that anyway because the kernel's RPC over AF_LOCAL implementation does not support autobind. That may be undesirable in the long term. Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit da09eb93033e7204cb3e3f3140b46cf108c42c8f Author: Chuck Lever <chuck.lever@xxxxxxxxxx> Date: Mon May 9 15:22:25 2011 -0400 SUNRPC: Clean up use of curly braces in switch cases Clean up. Preferred style is not to use curly braces around switch cases. I'm about to add another case that needs a third type cast. Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 4251c94833aa516c1fc7a0f8f504a26eadd4b91e Author: Chuck Lever <chuck.lever@xxxxxxxxxx> Date: Mon May 9 15:22:15 2011 -0400 NFS: Revert NFSROOT default mount options Marek Belisko <marek.belisko@xxxxxxxxx> reports that recent attempts to fix regressions in NFSROOT have broken his configuration: > After update from 2.6.38-rc8 to 2.6.38 is mounting rootfs over nfs not possible. > Log: > VFS: Mounted root (nfs filesystem) on device 0:14. > Freeing init memory: 132K > nfs: server 10.146.1.21 not responding, still trying > nfs: server 10.146.1.21 not responding, still trying > > This is never ending. I make short bisect (not too much commits > between versions) > and bad commit was reported: 53d4737580535e073963b91ce87d4216e434fab5 > > NFS: NFSROOT should default to "proto=udp" > > I've tested on mini2440 board (DM9000, static IP). > Is there some missing option or something else to be checked? An examination of a network trace captured during the failure shows that the mount is actually succeeding, but that the client is not seeing READ replies larger than 16KB. This could be a local packet filtering issue on the client, but we didn't troubleshoot this further because of the reported "git bisect" result. Last fall we removed the ad hoc mount option parser in fs/nfs/nfsroot.c in favor of using the main parser in fs/nfs/super.c (see commit 56463e50 "NFS: Use super.c for NFSROOT mount option parsing"). That commit changed the default NFSROOT mount options to be the same as those employed by user space mounts. As it turns out, these new default mount options are not tolerated by many embedded systems. So far these problems have been due to specific behavior of certain embedded NICs. The NFS community does not have such hardware on hand for running tests. Commit 53d47375 recently introduced a clean way to specify default mount options for NFSROOT, so we can now easily restore the traditional defaults for NFSROOT: vers=2,udp,rsize=4096,wsize=4096 This should revert the new default NFSROOT mount options introduced with commit 56463e50. Tested-by: Marek Belisto <marek.belisto@xxxxxxxxxxxxxxx> Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 61677eeec29e87edc03a1061ae0a04b92507450d Author: Chuck Lever <chuck.lever@xxxxxxxxxx> Date: Mon May 9 15:22:34 2011 -0400 SUNRPC: Rename xs_encode_tcp_fragment_header() Clean up: Use a more generic name for xs_encode_tcp_fragment_header(); it's appropriate to use for all stream transport types. We're about to add new stream transport. Also, move it to a place where it is more easily shared amongst the various send_request methods. And finally, replace the "htonl" macro invocation with its modern equivalent. Signed-off-by: Chuck Lever <chuck.lever@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 26f04dde681c6a48b2bacfc5fe01fef204419b0c Author: Lai Jiangshan <laijs@xxxxxxxxxxxxxx> Date: Sun May 1 06:21:54 2011 -0700 nfs,rcu: convert call_rcu(nfs_free_delegation_callback) to kfree_rcu() The rcu callback nfs_free_delegation_callback() just calls a kfree(), so we use kfree_rcu() instead of the call_rcu(nfs_free_delegation_callback). Signed-off-by: Lai Jiangshan <laijs@xxxxxxxxxxxxxx> Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxxxxxxxxxx> Cc: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 4b8ee2b82e8b0b6e17ee33feb74fcdb5c6d8dbdd Author: Vitaliy Gusev <gusev.vitaliy@xxxxxxxxx> Date: Fri May 20 01:34:46 2011 +0400 nfs41: Correct offset for LAYOUTCOMMIT A client sends offset to MDS as it was seen by DS. As result, file size after copy is only half of original file size in case of 2 DS. Signed-off-by: Vitaliy Gusev <gusev.vitaliy@xxxxxxxxxxx> Cc: stable@xxxxxxxxxx [2.6.39] Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 60c16ea877546e559988a8b1e4f4256afbbd83e6 Author: Harshula Jayasuriya <harshula@xxxxxxxxxx> Date: Mon May 23 22:52:11 2011 +1000 NFS: nfs_update_inode: print current and new inode size in debug output Hi Trond, In nfs_update_inode debug output, print the current and new inode size when the file size changes on the NFS server. Signed-off-by: Harshula Jayasuriya <harshula@xxxxxxxxxx> Reviewed-by: Jeff Layton <jlayton@xxxxxxxxxx> Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> commit 444f72fe7e7b5f4db34cee933fa3546ebb8e9122 Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu May 26 14:26:35 2011 -0400 NFSv4.1: Fix the handling of NFS4ERR_SEQ_MISORDERED errors Currently, the call to nfs4_schedule_session_recovery() will actually just result in a test of the lease when what we really want is to force a session reset. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Cc: stable@xxxxxxxxxx commit 0ced63d1a245ac11241a5d37932e6d04d9c8040d Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Thu May 26 14:26:35 2011 -0400 NFSv4: Handle expired stateids when the lease is still valid Currently, if the server returns NFS4ERR_EXPIRED in reply to a READ or WRITE, but the RENEW test determines that the lease is still active, we fail to recover and end up looping forever in a READ/WRITE + RENEW death spiral. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Cc: stable@xxxxxxxxxx commit fe19a96b10032035a35779f42ad59e35d6dd8ffd Author: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Date: Fri Mar 18 20:21:23 2011 -0400 SUNRPC: Deal with the lack of a SYN_SENT sk->sk_state_change callback... The TCP connection state code depends on the state_change() callback being called when the SYN_SENT state is set. However the networking layer doesn't actually call us back in that case. Signed-off-by: Trond Myklebust <Trond.Myklebust@xxxxxxxxxx> Cc: stable@xxxxxxxxxx -- Trond Myklebust Linux NFS client maintainer NetApp Trond.Myklebust@xxxxxxxxxx www.netapp.com -- To unsubscribe from this list: send the line "unsubscribe linux-nfs" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html