The following set of patches fix known issues with the 2.6.3 NFS client code, and significantly enhance the support for NFSv4.
NFSv2/v3/v4: New attribute revalidation code that no longer relies on ctime for correctness in avoiding races.
NFSv2/v3/v4: New file writeout strategy. Defer writes until a flush is requested by the application (or memory pressure).
Configuration: simplify configuration options. Automatically select RPCSEC_GSS if NFSv4 is selected. Remove need for user to select SUNRPC_GSS, and the crypto options.
NFSv2/v3: Ensure that we only use GETATTR+STATFS (NFSv2) and FSINFO (NFSv3) when mounting. This should hopefully fix the problem of RPCSEC_GSS credentials when mounting.
NFSv2/v3/v4: Ensure that fsync() flushes all writebacks to disk rather than just the ones labelled as belonging to our file. This fixes a bug whereby msync() will fail to flush pages to disk.
NFSv2/v3/v4: A patch by Greg Banks that fixes the "VFS: Busy inodes after unmount." problem.
RPC: Make XIDs unique on a per-transport basis rather than globally unique. Gets rid of an unnecessary global spinlock.
RPC: Sync rpc_set_timeo() up to the 2.4.x version. In particular, this will ensure that the timeout shift is clamped to a maximum value of 8.
RPC: Fix by Olaf Kirch to the rpc scheduler to ensure sync tasks respect the "intr" mount flag.
RPC: Ensure that we have the correct capabilities when binding a socket to a reserved port. Fixes a privilege bug when CONFIG_SECURITY is set.
RPC,NFSv2/v3/v4: Ensure that xprt_create_proto() and rpc_create_client() return full error codes. Should allow "mount" to print more useful error diagnostics.
NFSroot: Also includes a bugfix to NFSroot "mount" program to cause it to use AUTH_UNIX instead of AUTH_NULL for authentication.
NFSv2/v3/v4: Parenthesize #defines in nfs?xdr.c. Fix an off-by-one error on the value of compound_decode_hdr_maxsz
NFSv4: fix a printk() typo (spotted by Linda Dunaphant).
NFSv4: Ensure that nfs4_open_reclaim() copies the value of the new stateid back into the shared nfsv4 state structure.
NFSv4: Don't leak NFS4ERR_WRONGSEC errors back into nfs_lookup().
RPC,NFS,Lockd: Mark the debugging code as "unlikely" so that gcc moves it out of the mainline code paths.
NFSv2/v3 locking: Patch by Patrice Dumas to implement nlmsvc_proc_granted_res. When a server receives that callback it should deallocate the corresponding blocked lock using the nlmsvc_grant_reply function.
NFSv2/v3 locking: Patch by Patrice Dumas that adds a check to ensure we really were requesting a blocking lock when we get a reply from the server asking us to block.
NFSv2/v3 locking: Patch by Patrice Dumas to ensure that the server index blocks uniquely by using the client address in addition to the value of the NLM cookie field.
A patch to ensure that blocks which are not going to time out are placed last on the ordered list nlm_block (problem reported by Olaf Kirch).
RPC,NFSv3: remove the redundant "memset()" in call_encode(). Fix up the only places where this causes a padding error: xdr_encode_fhandle() and unx_marshal()
RPC: patch by Chuck Lever to make the number of RPC slots a tunable parameter. Increase the default number of slots when using TCP mounts from 16 to 64.
NFSv2: Fix up NFSv2 reads so that they report when the server returned a short read due to EOF.
NFSv2/v3/v4: Prepare the nfs_page struct to allow for short reads.
NFSv2/v3/v4: Add support for asynchronous reads even if rsize<PAGE_CACHE_SIZE.
NFSv2/v3/v4: Add support for asynchronous writes even if wsize<PAGE_CACHE_SIZE.
NFSv2/v3/v4: When pdflush() is trying to free up memory by calling our writepages() method, throttle all writes to that mountpoint.
NFSv2/v3/v4: Make the struct nfs_page allocator use GFP_KERNEL rather than GFP_NOFS.
RPC,NFS: remove instances of tests for waitqueue_active(). Those can be racy.
RPC: remove unnecessary support for sk->sk_sleep on those sockets that are owned by the RPC client.
All of the above patches rolled into one.