NFS client patches for Linux 2.6.8.1

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

linux-2.6.8.1-01-fix_locks.dif:

VFS: Fix up posix_same_owner() so that it only uses the file_lock->fl_owner field when determining lock equality.

VFS: Fix up posix locking routines to use posix_same_owner() instead of rolling their own checks.

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

linux-2.6.8.1-02-fix_locks2.dif:

VFS: Enable filesystems and to hook certain functions for copying and freeing locks using the new struct file_lock_operations.

VFS: Enable lock managers (i.e. lockd) to hook functions for comparing lock ownership using the new struct lock_manager_operations.

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

linux-2.6.8.1-03-fix_nfsd.dif:

NFSv4 server: fix locking code to use new posix locking callbacks.

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

linux-2.6.8.1-04-fix_lockd.dif:

NLM: fix lockd to use the new posix locking callbacks.

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

linux-2.6.8.1-05-nlm_lockowner.dif:

NLM: file_lock->fl_owner may live for longer than the pid of the original process that created it. Fix NFSv2/v3 client locking code to map file_lock->fl_owner into a unique 32-bit number or "pseudo-pid".

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

linux-2.6.8.1-06-cleanup_locks.dif:

VFS: get rid of the fl_notify, fl_insert, fl_remove fields from struct file_lock. They belong in the new lock_manager_operations structure.

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

linux-2.6.8.1-07-cleanup_posix.dif:

VFS,CIFS,NLM,NFSv4: make filesystems directly responsible for calling posix_lock_file() if they need it. This fixes an NFS race whereby in case of a server reboot, the recovery thread could re-establish a lock that had just been freed.

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

linux-2.6.8.1-08-Documentation.dif:

VFS: Fix up documentation for the new locking interfaces.

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

linux-2.6.8.1-09-lock_fix_cleanup.dif:

NFSv2/v3: Fix up a race in the case where the user presses ^C while a process is in the middle of setting up a posix lock. In case the server registered our lock, we need to make sure that it gets cleaned up during the resulting file close().

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

linux-2.6.8.1-10-lockd_bug.dif:

NLM: Fix bug which causes lockd to fail to register locks when blocking has occurred.

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

linux-2.6.8.1-11-rpc_stackredux.dif:

RPC: Reduce stack utilization for all synchronous NFS operations by using a dynamically allocated rpc_task structure instead of allocating one on the stack. This reduces stack utilization by over 200 bytes for all synchronous NFS operations.

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

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

linux-2.6.8.1-12-fix_readdir.dif:

NFSv4: ask the server to send us more readdir records per RPC call. Currently we are wasting considerable amounts of space in the page cache.

NFSv4: fix buffer overrun bugs that were being hidden by the above.

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

linux-2.6.8.1-13-fix_rpcclone.dif:

RPC: Add missing variable initialization in rpc_clone_client().

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

linux-2.6.8.1-14-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.8.1-15-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.8.1-16-fix_symlink.dif:

NFSv4: Fix the symlink overflow bug.

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

linux-2.6.8.1-17-clnt_check.dif:

RPC: Improved buffer overrun checking in call_verify

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

linux-2.6.8.1-18-krb5_cleanup.dif:

RPCSEC_GSS: Remove an unused parameter.

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

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

linux-2.6.8.1-19-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>

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

linux-2.6.8.1-20-dprintk_gss.dif:

RPCSEC_GSS: Missing newline in dprintk.

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

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

linux-2.6.8.1-21-rpcsec_spkm3.dif:

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

Signed-off-by: Andy Adamson <andros@citi.umich.edu>

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

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

linux-2.6.8.1-22-nfsi-req_lock.dif:

NFS: 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.8.1-23-nfs_put_super.dif:

NFS: Clean up the logic that handles recovery from a failed mount request. Get rid of nfs_put_super.

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

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

linux-2.6.8.1-24-blocksize.dif:

NFS: In 2.4, NFS O_DIRECT used the VFS's O_DIRECT logic to provide direct I/O support for NFS files. The 2.4 VFS O_DIRECT logic was block based, thus the NFS client had to provide a minimum allowable blocksize for O_DIRECT reads and writes on NFS files. For various reasons we chose 512 bytes.

In 2.6, there is no requirement for a minimum blocksize. NFS O_DIRECT reads and writes can go to any byte at any offset in a file. Thus we revert the blocksize setting for NFS file systems to the previous behavior, which was to advertise the "wsize" setting as the optimal I/O block size. This improves the performance of applications like 'cp' which use this value as their transfer size.

This patch also exposes the server's reported disk block size in the f_frsize of the vfsstat structure.

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

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

linux-2.6.8.1-25-nfs_fh_compare.dif:

NFS: While the storage container for NFS file handles must be able to store 128 bytes, usually NFS servers don't use file handles that are more than 32 bytes in size. This patch 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.8.1-26-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.8.1-27-Kconfig.dif:

KCONFIG: In the kernel help for NFSv3 & NFSv4 client support both are listed as "the newer version ... of the NFS protocol". Obviously both can't be the newer version at the same time, so here's a patch to correct the text in such a way that only v4 is listed as the newer version. Patch is against 2.6.7-rc3 - please consider including it.

Signed-off-by: Jesper Juhl <juhl-lkml@dif.dk>

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

linux-2.6.8.1-28-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).

Signed-off-by: Greg Banks <gnb@sgi.com>

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

linux-2.6.8.1-29-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.8.1-30-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.8.1-31-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.8.1-32-setclientid.dif:

NFSv4: Prime SETCLIENTID call for the delegation callback info.

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

linux-2.6.8.1-33-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.8.1-34-file_ctx2.dif:

NFSv4: More cleanups of the NFSv4 state.

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

linux-2.6.8.1-35-fix_create.dif:

NFSv4: don't retry CREATE operations if the server returns NFS4ERR_DELAY on the GETATTR call.

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

linux-2.6.8.1-36-getattr.dif:

NFSv2/v3/v4: Make the rpc_ops->getattr method take a filehandle rather than an inode argument. Fix up nfs_instantiate() and _nfs4_do_open to use this since doing a new lookup might be racy.

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

linux-2.6.8.1-37-delegation_management.dif:

NFSv4: Basic code for managing delegation state.

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

linux-2.6.8.1-38-callback_server.dif:

NFSv4: Delegation callback server.

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

linux-2.6.8.1-39-open_cleanup1.dif:

NFSv4: XDR cleanups in preparation for delegations.

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

linux-2.6.8.1-40-open_cleanup2.dif:

NFSv4: XDR cleanups in preparation for delegations.

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

linux-2.6.8.1-41-delegation_recall.dif:

NFSv4: Service delegation recall requests from the server.

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

linux-2.6.8.1-42-delegation_recall2.dif:

NFSv4: More delegation recall code

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

linux-2.6.8.1-43-delegation_reclaim.dif:

NFSv4: Recover delegations on server reboot.

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

linux-2.6.8.1-44-delegation_open.dif:

NFSv4: Delegated open.

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

linux-2.6.8.1-45-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.8.1-46-cb_pathdown.dif:

NFSv4: return all delegations we hold if the server issues a NFS4ERR_CB_PATH_DOWN error.

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

linux-2.6.8.1-47-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.8.1-48-nfs4_nointr.dif:

RPC,NFSv4: NFSv4 operations that create or destroy state on the server are not allowed to be interrupted as that may result in the client and server disagreeing.

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

linux-2.6.8.1-49-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.8.1-50-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.8.1-NFS_ALL.dif:

All of the above patches rolled into one.


Last modified: Mon Jan 05 14:33:10 EST 2004
[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory   -  
[TXT]linux-2.6.8.1-01-fix..>2004-08-14 18:38 2.2K 
[TXT]linux-2.6.8.1-02-fix..>2004-08-14 20:25 4.3K 
[TXT]linux-2.6.8.1-03-fix..>2004-08-14 18:40 2.4K 
[TXT]linux-2.6.8.1-04-fix..>2004-08-14 18:42 9.5K 
[TXT]linux-2.6.8.1-05-nlm..>2004-08-14 18:43 8.4K 
[TXT]linux-2.6.8.1-06-cle..>2004-08-14 18:44 5.1K 
[TXT]linux-2.6.8.1-07-cle..>2004-08-14 18:45 6.3K 
[TXT]linux-2.6.8.1-08-Doc..>2004-08-14 20:09 1.8K 
[TXT]linux-2.6.8.1-09-loc..>2004-06-06 17:30 4.4K 
[TXT]linux-2.6.8.1-10-loc..>2004-08-18 23:41 686  
[TXT]linux-2.6.8.1-11-rpc..>2004-08-19 18:26 1.7K 
[TXT]linux-2.6.8.1-12-fix..>2004-08-05 23:19 3.4K 
[TXT]linux-2.6.8.1-13-fix..>2004-07-03 01:06 965  
[TXT]linux-2.6.8.1-14-acc..>2004-06-11 00:03 8.4K 
[TXT]linux-2.6.8.1-15-ope..>2004-06-15 23:16 1.3K 
[TXT]linux-2.6.8.1-16-fix..>2004-06-14 18:28 6.7K 
[TXT]linux-2.6.8.1-17-cln..>2004-07-20 16:50 1.6K 
[TXT]linux-2.6.8.1-18-krb..>2004-06-17 02:58 3.4K 
[TXT]linux-2.6.8.1-19-nit..>2004-06-17 02:59 2.3K 
[TXT]linux-2.6.8.1-20-dpr..>2004-06-17 02:59 2.2K 
[TXT]linux-2.6.8.1-21-rpc..>2004-06-17 03:00 30K 
[TXT]linux-2.6.8.1-22-nfs..>2004-08-10 04:29 11K 
[TXT]linux-2.6.8.1-23-nfs..>2004-08-02 20:10 7.7K 
[TXT]linux-2.6.8.1-24-blo..>2004-06-17 03:03 3.1K 
[TXT]linux-2.6.8.1-25-nfs..>2004-07-03 02:33 3.9K 
[TXT]linux-2.6.8.1-26-nfs..>2004-07-03 03:08 5.1K 
[TXT]linux-2.6.8.1-27-Kco..>2004-06-17 03:04 3.1K 
[TXT]linux-2.6.8.1-28-v2_..>2004-06-17 03:05 4.7K 
[TXT]linux-2.6.8.1-29-nfs..>2004-07-02 17:43 32K 
[TXT]linux-2.6.8.1-30-reb..>2004-08-10 17:51 20K 
[TXT]linux-2.6.8.1-31-rec..>2004-08-07 00:42 12K 
[TXT]linux-2.6.8.1-32-set..>2004-04-12 23:25 5.1K 
[TXT]linux-2.6.8.1-33-fil..>2004-08-18 21:00 59K 
[TXT]linux-2.6.8.1-34-fil..>2004-07-02 14:29 5.2K 
[TXT]linux-2.6.8.1-35-fix..>2004-08-10 05:43 2.5K 
[TXT]linux-2.6.8.1-36-get..>2004-08-10 07:22 6.1K 
[TXT]linux-2.6.8.1-37-del..>2004-08-06 22:43 21K 
[TXT]linux-2.6.8.1-38-cal..>2004-08-12 05:01 37K 
[TXT]linux-2.6.8.1-39-ope..>2004-06-16 00:43 11K 
[TXT]linux-2.6.8.1-40-ope..>2004-08-10 06:20 2.6K 
[TXT]linux-2.6.8.1-41-del..>2004-08-10 06:30 9.0K 
[TXT]linux-2.6.8.1-42-del..>2004-06-16 19:27 1.6K 
[TXT]linux-2.6.8.1-43-del..>2004-06-15 07:35 6.3K 
[TXT]linux-2.6.8.1-44-del..>2004-06-15 17:29 7.7K 
[TXT]linux-2.6.8.1-45-del..>2004-08-10 05:09 11K 
[TXT]linux-2.6.8.1-46-cb_..>2004-08-06 02:28 3.9K 
[TXT]linux-2.6.8.1-47-del..>2004-06-14 01:30 735  
[TXT]linux-2.6.8.1-48-nfs..>2004-08-07 21:54 5.9K 
[TXT]linux-2.6.8.1-49-rpc..>2004-12-29 06:40 29K 
[TXT]linux-2.6.8.1-50-rpc..>2004-12-29 06:40 8.1K 
[TXT]linux-2.6.8.1-NFS_AL..>2004-08-23 01:51 345K 

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