NFS client patches for Linux 2.6.15-rc4

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

linux-2.6.15-01-nfs-cache-init.dif:

Author: Steve Dickson <steved@redhat.com> Date: Wed, 30 Nov 2005 09:25:33 -0500 NFS: Fix cache consistency regression

Make sure cache_change_attribute is initialized to jiffies so when the mtime changes on directory, the directory will be refreshed.

Signed-off by: Steve Dickson <steved@redhat.com>

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-02-fix_cache_consistency.dif:

NFS: Fix a few further cache consistency regressions

Steve Dickson writes: Doing the following: 1. On server: $ mkdir ~/t $ echo Hello > ~/t/tmp

2. On client, wait for a string to appear in this file: $ until grep -q foo t/tmp ; do echo -n . ; sleep 1 ; done

3. On server, create a *new* file with the same name containing that string: $ mv ~/t/tmp ~/t/tmp.old; echo foo > ~/t/tmp

will show how the client will never (and I mean never ;-) ) see the updated file.

The problem is that we do not update nfsi->cache_change_attribute when the file changes on the server (we only update it when our client makes the changes). This again means that functions like nfs_check_verifier() will fail to register when the parent directory has changed and should trigger a dentry lookup revalidation.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-03-fix_pipe_oops.dif:

SUNRPC: Fix Oopsable condition in rpc_pipefs

The elements on rpci->in_upcall are tracked by the filp->private_data, which will ensure that they get released when the file is closed.

The exception is if rpc_close_pipes() gets called first, since that sets rpci->ops to NULL.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-04-fix_mmap_hang.dif:

NFS: use set_page_writeback() in the appropriate places

Ensure that we use set_page_writeback() in the appropriate places to help the VM in keeping its page radix_tree in sync.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-05-fix_attr_updates.dif:

NFS: Fix post-op attribute revalidation...

- Missing nfs_mark_for_revalidate in nfs_proc_link()

- Missing nfs_mark_for_revalidate in nfs_rename()

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-06-fix_sync_writes.dif:

NFSv4: Fix an Oops in the synchronous write path

- Missing initialisation of attribute bitmask in _nfs4_proc_write()

- On success, _nfs4_proc_write() must return number of bytes written.

- Missing post_op_update_inode() in _nfs4_proc_write()

- Missing initialisation of attribute bitmask in _nfs4_proc_commit()

- Missing post_op_update_inode() in _nfs4_proc_commit()

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-07-writeback_control-flag.dif:

Author: Andrew Morton <akpm@osdl.org> Date: Wed, 16 Nov 2005 15:07:01 -0800 identify multipage ->writepages() calls

NFS needs to be able to distinguish between single-page ->writepage() calls and multipage ->writepages() calls.

For the single-page writepage calls NFS can kick off the I/O within the context of ->writepage().

For multipage ->writepages calls, nfs_writepage() will leave the I/O pending and nfs_writepages() will kick off the I/O when it all has been queued up within NFS.

Cc: Trond Myklebust <trond.myklebust@fys.uio.no>

Signed-off-by: Andrew Morton <akpm@osdl.org>

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

linux-2.6.15-08-nfs_writeback_control.dif:

NFS: Work correctly with single-page ->writepage() calls

Ensure that we always initiate flushing of data before we exit a single-page ->writepage() call.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-09-rpc_task_cleanup_exit.dif:

SUNRPC: Yet more RPC cleanups

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-10-rpc_task_cleanup.dif:

RPC: Clean up RPC task structure

Shrink the RPC task structure. Instead of storing separate pointers for task->tk_exit and task->tk_release, put them in a structure.

Also pass the user data pointer as a parameter instead of passing it via task->tk_calldata. This enables us to nest callbacks.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-11-rpc_task_cleanup_prepare.dif:

SUNRPC: Further cleanups

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-12-rpc_async_call.dif:

NFSv4: stateful NFSv4 RPC call interface

The NFSv4 model requires us to complete all RPC calls that might establish state on the server whether or not the user wants to interrupt it. We may also need to schedule new work (including new RPC calls) in order to cancel the new state.

The asynchronous RPC model will allow us to ensure that RPC calls always complete, but in order to allow for "synchronous" RPC, we want to add the ability to wait for completion. The waits are, of course, interruptible.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-13-cleanup_locku.dif:

NFSv4: Make locku use the new RPC "wait on completion" interface.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-14-nfs_open_interruptible.dif:

NFSv4: Allocate OPEN call RPC arguments using kmalloc()

Cleanup in preparation for making OPEN calls interruptible by the user.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-15-cleanup_exports.dif:

SUNRPC: Get rid of some unused exports

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-16-rpc_execute.dif:

SUNRPC: rpc_execute should not return task->tk_status;

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-17-nfs4_async_open.dif:

NFSv4: Convert open() into an asynchronous RPC call

OPEN is a stateful operation, so we must ensure that it always completes. In order to allow users to interrupt the operation, we need to make the RPC call asynchronous, and then wait on completion (or cancel).

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-18-nfs4_async_open_confirm.dif:

NFSv4: Make open_confirm() asynchronous too

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-19-track_open_close.dif:

NFSv4: Make nfs4_state track O_RDWR, O_RDONLY and O_WRONLY separately

A closer reading of RFC3530 reveals that OPEN_DOWNGRADE must always specify a access modes that have been the argument of a previous OPEN operation. IOW: doing OPEN(O_RDWR) and then OPEN_DOWNGRADE(O_WRONLY) is forbidden unless the user called OPEN(O_WRONLY)

In order to fix that, we really need to track the three possible open states separately.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-20-fix_open_recovery.dif:

NFSv4: Make open recovery track O_RDWR, O_RDONLY and O_WRONLY correctly

When recovering from a delegation recall or a network partition, we need to replay open(O_RDWR), open(O_RDONLY) and open(O_WRONLY) separately.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-21-cleanup_locku_xdr.dif:

NFSv4: locking XDR cleanup

Get rid of some unnecessary intermediate structures

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-22-nfs4_lock_interruptible.dif:

NFSv4: Convert LOCK rpc call into an asynchronous RPC call

In order to allow users to interrupt/cancel it.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-23-delegreturn_interruptible.dif:

NFSv4: Make DELEGRETURN an interruptible operation.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-24-rpc_make_killable.dif:

SUNRPC: Ensure that SIGKILL will always terminate a synchronous RPC call.

...and make sure that the "intr" flag also enables SIGHUP and SIGTERM to interrupt RPC calls too (as per the Solaris implementation).

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-25-renew_lease.dif:

NFSv4: OPEN/LOCK/LOCKU/CLOSE will automatically renew the NFSv4 lease

Cut down on the number of unnecessary RENEW requests on the wire.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-26-state_recover_cleanup.dif:

NFSv4: State recovery cleanup

Use wait_on_bit() when waiting for state recovery to complete.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-27-use_kthread.dif:

NFS: Convert instances of kernel_thread() to kthread()

Convert private implementations in NFSv4 state recovery and delegation code to use kthreads.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-28-renew_only_when_stateful.dif:

NFSv4: Send RENEW requests to the server only when we're holding state

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-29-renew_no_machine_cred.dif:

NFSv4: Remove requirement for machine creds for the "renew" operation

In RFC3530, the RENEW operation is allowed to use either

the same principal, RPC security flavour and (if RPCSEC_GSS), the same mechanism and service that was used for SETCLIENTID_CONFIRM

OR

Any principal, RPC security flavour and service combination that currently has an OPEN file on the server.

Choose the latter since that doesn't require us to keep credentials for the same principal for the entire duration of the mount.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-30-setclient_no_machine_cred.dif:

NFSv4: Remove requirement for machine creds for the "setclientid" operation

Use a cred from the nfs4_client->cl_state_owners list.

Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>

linux-2.6.15-NFS_ALL.dif:

All of the above

[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory   -  
[TXT]linux-2.6.15-01-nfs-..>2005-11-30 15:07 841  
[TXT]linux-2.6.15-02-fix_..>2005-12-01 15:47 7.6K 
[TXT]linux-2.6.15-03-fix_..>2005-12-01 20:25 1.1K 
[TXT]linux-2.6.15-04-fix_..>2005-11-30 17:23 1.4K 
[TXT]linux-2.6.15-05-fix_..>2005-12-03 19:49 1.7K 
[TXT]linux-2.6.15-06-fix_..>2005-12-02 03:45 1.6K 
[TXT]linux-2.6.15-07-writ..>2005-12-13 00:22 2.2K 
[TXT]linux-2.6.15-08-nfs_..>2005-11-30 17:23 1.4K 
[TXT]linux-2.6.15-09-rpc_..>2005-11-16 05:21 6.4K 
[TXT]linux-2.6.15-10-rpc_..>2005-12-03 19:49 42K 
[TXT]linux-2.6.15-11-rpc_..>2005-12-02 03:45 6.3K 
[TXT]linux-2.6.15-12-rpc_..>2005-11-24 20:01 8.3K 
[TXT]linux-2.6.15-13-clea..>2005-12-02 03:45 4.1K 
[TXT]linux-2.6.15-14-nfs_..>2005-12-02 03:45 10K 
[TXT]linux-2.6.15-15-clea..>2005-11-15 19:58 1.2K 
[TXT]linux-2.6.15-16-rpc_..>2005-11-17 02:49 1.4K 
[TXT]linux-2.6.15-17-nfs4..>2005-12-02 03:45 13K 
[TXT]linux-2.6.15-18-nfs4..>2005-12-02 03:45 6.4K 
[TXT]linux-2.6.15-19-trac..>2005-12-02 03:45 4.5K 
[TXT]linux-2.6.15-20-fix_..>2005-12-02 03:45 13K 
[TXT]linux-2.6.15-21-clea..>2005-12-02 03:45 20K 
[TXT]linux-2.6.15-22-nfs4..>2005-12-02 03:45 9.2K 
[TXT]linux-2.6.15-23-dele..>2005-12-02 03:45 2.6K 
[TXT]linux-2.6.15-24-rpc_..>2005-12-03 03:07 1.6K 
[TXT]linux-2.6.15-25-rene..>2005-12-02 03:45 6.6K 
[TXT]linux-2.6.15-26-stat..>2005-12-02 03:45 4.7K 
[TXT]linux-2.6.15-27-use_..>2005-12-02 21:24 3.5K 
[TXT]linux-2.6.15-28-rene..>2005-12-02 21:24 5.9K 
[TXT]linux-2.6.15-29-rene..>2005-12-02 21:24 7.0K 
[TXT]linux-2.6.15-30-setc..>2005-12-02 21:24 8.1K 
[TXT]linux-2.6.15-NFS_ALL..>2005-12-03 20:17 151K 

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