NFS client patches for Linux 2.6.4

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

linux-2.6.4-01-attr.dif:

NFSv2/v3/v4: New attribute revalidation code that no longer relies on ctime for correctness in avoiding races.

linux-2.6.4-02-strategy.dif:

NFSv2/v3/v4: New file writeout strategy. Defer writes until a flush is requested by the application (or memory pressure).

linux-2.6.4-03-fix_kconfig.dif:

Configuration: simplify configuration options. Automatically select RPCSEC_GSS if NFSv4 is selected. Remove need for user to select SUNRPC_GSS, and the crypto options.

linux-2.6.4-04-getroot.dif:

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.

linux-2.6.4-05-msync.dif:

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.

linux-2.6.4-06-fix_oops.dif:

NFSv2/v3/v4: A patch by Greg Banks that fixes the "VFS: Busy inodes after unmount." problem.

linux-2.6.4-07-XID.dif:

RPC: Make XIDs unique on a per-transport basis rather than globally unique. Gets rid of an unnecessary global spinlock.

linux-2.6.4-08-rpc_fixes.dif:

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.

linux-2.6.4-09-reconnect.dif:

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.

linux-2.6.4-10-create_client.dif:

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.

linux-2.6.4-11-misc.dif:

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.

linux-2.6.4-12-lockd1.dif:

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.

linux-2.6.4-13-lockd2.dif:

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.

linux-2.6.4-14-lockd3.dif:

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.

linux-2.6.4-15-lockd4.dif:

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).

linux-2.6.4-16-memset.dif:

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()

linux-2.6.4-17-rpc-slot-table.dif:

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.

linux-2.6.4-18-nfs2_read.dif:

NFSv2: Fix up NFSv2 reads so that they report when the server returned a short read due to EOF.

linux-2.6.4-19-prepare_nfspage.dif:

NFSv2/v3/v4: Prepare the nfs_page struct to allow for short reads.

linux-2.6.4-20-small_rsize.dif:

NFSv2/v3/v4: Add support for asynchronous reads even if rsize<PAGE_CACHE_SIZE.

linux-2.6.4-21-small_wsize.dif:

NFSv2/v3/v4: Add support for asynchronous writes even if wsize<PAGE_CACHE_SIZE.

linux-2.6.4-22-congestion.dif:

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.

linux-2.6.4-23-unrace.dif:

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.

linux-2.6.4-24-rpc_throttle:

RPC: add fair queueing to the RPC scheduler.

If a wait queue is defined as a "priority queue" then requests are dequeued in blocks of 16 in order to work well with write gathering + readahead on the server.

There are 3 levels of priority. The high priority tasks get scheduled 16 times for each time the default level gets scheduled. The lowest level gets scheduled once every 4 times the normal level gets scheduled.

Original patch contributed by Shantanu Goel.

linux-2.6.4-25-rpc_fixes2:

Close some potential scheduler races in rpciod.

linux-2.6.4-26-short_rw.dif:

NFSv2/v3/v4: Deal with the case where the server reads/writes fewer bytes than we requested due to resource limitations etc.

linux-2.6.4-27-nfs4mount.dif:

NFSv4: Fix a list corruption in the NFSv4 state engine.

linux-2.6.4-NFS4_ALL.dif:

All of the above patches rolled into one.


Return to main menu

Please address all comments about this page to Trond Myklebust
About Trond
Last modified: Mon Jan 05 14:33:10 EST 2004
[ICO]NameLast modifiedSizeDescription

[DIR]Parent Directory  -
[TXT]linux-2.6.4-01-attr.dif09-Mar-2004 11:01 55K
[TXT]linux-2.6.4-02-strategy.dif09-Mar-2004 11:02 6.7K
[TXT]linux-2.6.4-03-fix_kconfig.dif08-Feb-2004 08:57 2.4K
[TXT]linux-2.6.4-04-getroot.dif20-Feb-2004 12:31 11K
[TXT]linux-2.6.4-05-msync.dif27-Feb-2004 17:17 11K
[TXT]linux-2.6.4-06-fix_oops.dif14-Feb-2004 15:40 646
[TXT]linux-2.6.4-07-XID.dif15-Feb-2004 05:22 2.5K
[TXT]linux-2.6.4-08-rpc_fixes.dif27-Feb-2004 22:21 2.8K
[TXT]linux-2.6.4-09-reconnect.dif04-Mar-2004 01:40 8.7K
[TXT]linux-2.6.4-10-create_client.dif19-Feb-2004 23:53 12K
[TXT]linux-2.6.4-11-misc.dif08-Mar-2004 23:08 32K
[TXT]linux-2.6.4-12-lockd1.dif20-Feb-2004 00:31 4.0K
[TXT]linux-2.6.4-13-lockd2.dif20-Feb-2004 00:31 668
[TXT]linux-2.6.4-14-lockd3.dif20-Feb-2004 00:32 4.7K
[TXT]linux-2.6.4-15-lockd4.dif20-Feb-2004 00:32 688
[TXT]linux-2.6.4-16-memset.dif25-Feb-2004 12:15 4.3K
[TXT]linux-2.6.4-17-rpc-slot-table.dif29-Feb-2004 16:18 11K
[TXT]linux-2.6.4-18-nfs2_read.dif28-Feb-2004 11:59 2.1K
[TXT]linux-2.6.4-19-prepare_nfspage.dif29-Feb-2004 21:28 4.5K
[TXT]linux-2.6.4-20-small_rsize.dif22-Mar-2004 09:51 23K
[TXT]linux-2.6.4-21-small_wsize.dif22-Mar-2004 09:51 27K
[TXT]linux-2.6.4-22-congestion.dif08-Mar-2004 18:37 5.2K
[TXT]linux-2.6.4-23-unrace.dif01-Mar-2004 17:55 3.2K
[TXT]linux-2.6.4-24-rpc_throttle.dif04-Mar-2004 17:39 23K
[TXT]linux-2.6.4-25-rpc_fixes2.dif03-Mar-2004 23:01 2.6K
[TXT]linux-2.6.4-26-short_rw.dif06-Mar-2004 02:50 4.2K
[TXT]linux-2.6.4-27-nfs4mount.dif08-Mar-2004 02:43 2.2K
[TXT]linux-2.6.4-NFS4_ALL.dif10-Mar-2004 20:28 229K

Return to main menu

Please address all comments about this page to Trond Myklebust
About Trond
Last modified: Fri Mar 11 17:17:40 EST 2005