NFS client patches for Linux 2.6.7

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

linux-2.6.7-01-fix_locks.dif:

VFS: Minimal fix to posix_same_owner() to only use the fl_owner_t field in all cases when the caller is not lockd

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-02-fix_locks2.dif:

VFS: More extensive fix to locking code. Add file_lock_operations to deal with copy/release of private data in the file_lock->fl_u field. Add filesystem hooks for steal_locks(): changing the lockowner is hardly supported concept in most file locking protocols.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-03-fix_nfsd.dif:

NFSv4 server: Fix up nfs4state.c to support the file_lock_operations, and the lock_manager_operations.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-04-fix_lockd.dif:

NLM/lockd: Fix up lockd to make use of the new interface. In particular set up fl_compare_owner() methods for both client and server.

NLM/lockd: Make the client release all locks in a "steal_locks" situation.

NLM/lockd: Fix up copying/release of the file_lock->fl_u.nfs_fl private data.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-05-nlm_lockowner.dif:

NLM/lockd: set up a unique mapping between the fl_owner_t and a unique 32-bit "pid" on the client side. We can't use the real pid of the process/thread 'cos CLONE_FILES does not automatically imply CLONE_THREAD.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-06-cleanup_locks.dif:

NLM/lockd: Move fl_insert, fl_remove, into struct file_lock_operations.

NLM/lockd: Move fl_notify, into struct lock_manager_operations.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-07-cleanup_posix.dif:

NLM/lockd/NFSv3/CIFS: Make the filesystem responsible for calling posix_lock_file() if it needs to. This means it can be done under the correct atomicity locks.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-08-lock_fix_cleanup.dif:

Locking NFSv2/v3: clean up nfs_lock().

Locking NFSv2/v3: fcntl(GETLK) doesn't need to write back any data.

Locking NFSv2/v3: fix a potential lock leak on the server.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-09-fix_readdir.dif:

NFSv4: set a more reasonable value for the READDIR "dircount" field.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-10-fix_rpcclone.dif:

RPC: Ensure that rpc_clone_client() references its true parent.

RPC: Fix some initializers in rpc_clone_client().

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-11-access.dif:

NFSv3/v4: be more efficient when doing ACCESS RPC calls. Always ask for the full set of permissions.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-12-open_revalidate.dif:

NFSv4: Optimizing away the case of negative dentries in nfs_open_revalidate() avoids several atomicity problems.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-13-fix_symlink.dif:

NFSv4: Fix the symlink overflow bug.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-14-clnt_check.dif:

RPC: Tighten call_verify() checks for truncated messages.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-15-krb5_cleanup.dif:

RPCSEC_GSS/krb5: Remove an unused parameter.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>

linux-2.6.7-16-nitpick_err_return.dif:

NFSv4: OK, so it's trivial and probably superfluous, but I don't see why we shouldn't be slightly stricter here, so I'm just going to keep sending this until I'm told to stop.... Make sure that unmapped errors are approximately in the range of defined NFS4 errors.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>

linux-2.6.7-17-dprintk_gss.dif:

RPCSEC_GSS: Missing newline in dprintk.

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>

linux-2.6.7-18-rpcsec_spkm3.dif:

RPCSEC_GSS/spkm3: Add the spkm3 common and client-side code.

From Andy Adamson <andros@citi.umich.edu>

Signed-off-by: J. Bruce Fields <bfields@citi.umich.edu>

linux-2.6.7-19-nfsi-req_lock.dif:

NFS read/write: Break the nfs_wreq_lock into per-mount locks. This helps prevent a heavy read and write workload on one mount point from interfering with workloads on other mount points.

Note that there is still some serialization due to the big kernel lock.

Signed-off-by: Chuck Lever <cel@netapp.com>

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-20-nfs_put_super.dif:

NFSv2/v3: Clean up the logic that handles recovery from a failed mount request.

NFSv2/v3: Get rid of nfs_put_super.

Signed-off-by: Chuck Lever <cel@netapp.com>

linux-2.6.7-21-blocksize.dif:

NFSv2/v3: advertise the "wsize" setting as the optimal I/O block size.

Signed-off-by: Chuck Lever <cel@netapp.com>

linux-2.6.7-22-nfs_fh_compare.dif:

NFS: creates an efficient mechanism for comparing file handles that ignores the unused bytes in a file handle.

Signed-off-by: Chuck Lever <cel@netapp.com>

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-23-nfs_copy_fh.dif:

NFS: Now that file handle comparison ignores the unused parts of the file handle container, there is no longer any need to clear the file handle container before copying in a file handle. This allows us to remove a 128 byte memset() from several hot paths.

Signed-off-by: Chuck Lever <cel@netapp.com>

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-24-Kconfig.dif:

Kconfig: In the kernel help for NFSv3 & NFSv4 client support both are listed as "the newer version ... of the NFS protocol"

Patch by Jesper Juhl <juhl-lkml@dif.dk>

linux-2.6.7-25-v2_mtime.dif:

NFSv2: In the NFSv3 RFC, the sattr3 structure passed in the SETATTR call allows for the client to request that the mtime and/or atime of an inode be set to the current server time, the given (client) time, or not changed. The set-to-current-server value is used when you run "touch file" on the client.

The NFSv2 RFC defines no such encoding for the sattr structure. However Solaris and Irix machine obey a convention where passing the invalid value mtime.useconds=1000000 means "set both mtime and atime to the current server time". The convention is documented in the book "NFS Illustrated" by Brent Callaghan. The patch below implements this convention for the Linux client and server (hence multiple To:s).

Patch by Greg Banks <gnb@sgi.com>

linux-2.6.7-26-nfs4_exception.dif:

NFSv4: Fix up the exception handling. Ensure we always handle NFS4ERR_DELAY properly.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-27-reboot_recovery.dif:

NFSv4: Clean up the reboot recovery. Ensure that we exclude stateful operations by using a per-server read/write semaphore.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-28-recover_locks.dif:

NFSv4: On server reboot we need to recover byte-range locks.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-29-setclientid.dif:

NFSv4: Prime SETCLIENTID call for the delegation callback info.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-30-file_ctx.dif:

NFSv2/v3/v4: Place NFS nfs_page shared data into a single structure that hangs off filp->private_data. As a side effect, this also cleans up the NFSv4 private file state info.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-31-file_ctx2.dif:

NFSv4: More cleanups of the NFSv4 state.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-32-delegation_management.dif:

NFSv4: Basic code for managing delegation state.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-33-callback_server.dif:

NFSv4: Delegation callback server.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-34-open_cleanup1.dif:

NFSv4: XDR cleanups in preparation for delegations.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-35-open_cleanup2.dif:

NFSv4: XDR cleanups in preparation for delegations.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-36-delegation_recall.dif:

NFSv4: Service delegation recall requests from the server.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-37-delegation_recall2.dif:

NFSv4: More delegation recall code

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-38-delegation_reclaim.dif:

NFSv4: Recover delegations on server reboot.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-39-delegation_open.dif:

NFSv4: Delegated open.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-40-delegation_cache.dif:

NFSv4: More aggressive caching if we have a delegation.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-41-delegation_enable.dif:

NFSv4: Enable delegations by actually telling the server about our recall ability.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-42-rpc_workqueue.dif:

RPC: Convert rpciod into a work queue for greater flexibility.

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-43-rpc_queue_lock.dif:

RPC: Remove the rpc_queue_lock global spinlock. Replace it with per-rpc_queue spinlocks

Signed-off-by: Trond Myklebust <trond.myklebust@fys.uio.no>

linux-2.6.7-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

[PARENTDIR]Parent Directory   -  
[TXT]linux-2.6.7-01-fix_l..>2004-06-30 03:04 2.2K 
[TXT]linux-2.6.7-02-fix_l..>2004-06-30 03:32 4.6K 
[TXT]linux-2.6.7-03-fix_n..>2004-06-29 21:46 2.4K 
[TXT]linux-2.6.7-04-fix_l..>2004-06-30 03:19 9.6K 
[TXT]linux-2.6.7-05-nlm_l..>2004-06-30 03:32 8.4K 
[TXT]linux-2.6.7-06-clean..>2004-06-30 04:44 5.2K 
[TXT]linux-2.6.7-07-clean..>2004-07-02 17:30 6.3K 
[TXT]linux-2.6.7-08-lock_..>2004-06-06 17:30 4.4K 
[TXT]linux-2.6.7-09-fix_r..>2004-08-05 23:19 3.4K 
[TXT]linux-2.6.7-10-fix_r..>2004-07-03 01:06 965  
[TXT]linux-2.6.7-11-acces..>2004-06-11 00:03 8.4K 
[TXT]linux-2.6.7-12-open_..>2004-06-15 23:16 1.3K 
[TXT]linux-2.6.7-13-fix_s..>2004-06-14 18:28 6.7K 
[TXT]linux-2.6.7-14-clnt_..>2004-07-03 01:09 1.6K 
[TXT]linux-2.6.7-15-krb5_..>2004-06-17 02:58 3.4K 
[TXT]linux-2.6.7-16-nitpi..>2004-06-17 02:59 2.3K 
[TXT]linux-2.6.7-17-dprin..>2004-06-17 02:59 2.2K 
[TXT]linux-2.6.7-18-rpcse..>2004-06-17 03:00 30K 
[TXT]linux-2.6.7-19-nfsi-..>2004-07-03 01:52 9.5K 
[TXT]linux-2.6.7-20-nfs_p..>2004-06-17 03:03 7.7K 
[TXT]linux-2.6.7-21-block..>2004-06-17 03:03 3.1K 
[TXT]linux-2.6.7-22-nfs_f..>2004-07-03 02:33 3.9K 
[TXT]linux-2.6.7-23-nfs_c..>2004-07-03 03:08 5.1K 
[TXT]linux-2.6.7-24-Kconf..>2004-06-17 03:04 3.1K 
[TXT]linux-2.6.7-25-v2_mt..>2004-06-17 03:05 4.7K 
[TXT]linux-2.6.7-26-nfs4_..>2004-07-02 17:43 32K 
[TXT]linux-2.6.7-27-reboo..>2004-07-02 17:46 20K 
[TXT]linux-2.6.7-28-recov..>2004-08-07 00:42 12K 
[TXT]linux-2.6.7-29-setcl..>2004-04-12 23:25 5.1K 
[TXT]linux-2.6.7-30-file_..>2004-07-27 21:45 59K 
[TXT]linux-2.6.7-31-file_..>2004-07-02 14:29 5.2K 
[TXT]linux-2.6.7-32-deleg..>2004-08-06 22:43 21K 
[TXT]linux-2.6.7-33-callb..>2004-06-16 19:27 38K 
[TXT]linux-2.6.7-34-open_..>2004-06-16 00:43 11K 
[TXT]linux-2.6.7-35-open_..>2004-06-14 20:32 2.8K 
[TXT]linux-2.6.7-36-deleg..>2004-06-15 05:41 9.0K 
[TXT]linux-2.6.7-37-deleg..>2004-06-16 19:27 1.6K 
[TXT]linux-2.6.7-38-deleg..>2004-06-15 07:35 6.3K 
[TXT]linux-2.6.7-39-deleg..>2004-06-15 17:29 7.7K 
[TXT]linux-2.6.7-40-deleg..>2004-07-02 23:01 11K 
[TXT]linux-2.6.7-41-deleg..>2004-06-14 01:30 735  
[TXT]linux-2.6.7-42-rpc_w..>2004-07-02 23:56 29K 
[TXT]linux-2.6.7-43-rpc_q..>2004-07-02 21:20 8.0K 
[TXT]linux-2.6.7-NFS4_ALL..>2004-07-03 03:08 331K 

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