The following set of patches fix known issues with the 2.6.25-rc2 NFS client code, and significantly enhance the support for NFSv4.
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Mon, 25 Feb 2008 15:56:29 -0800
NFS: Fix an f_mode/f_flags confusion in fs/nfs/write.c
O_SYNC is stored in filp->f_flags. Thanks to Al Viro for pointing out the bug.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Tue, 19 Feb 2008 20:04:20 -0500
NFS: Fix a deadlock with lazy umount
We can't allow rpc callback functions like task->tk_ops->rpc_call_prepare() and task->tk_ops->rpc_call_done() to call mntput() in any way, since that will cause a deadlock when the call to rpc_shutdown_client() attempts to wait on 'task' to complete.
We can avoid the above deadlock by moving calls to mntput to task->tk_ops->rpc_release() callback, since at that time the task will be marked as completed, and so rpc_shutdown_client won't attempt to wait on it.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Tue, 19 Feb 2008 20:04:21 -0500
SUNRPC: Allow the rpc_release() callback to be run on another workqueue
A lot of the work done by the rpc_release() callback is inappropriate for rpciod as it will often involve things like starting a new rpc call in order to clean up state after an interrupted NFSv4 open() call, or calls to mntput(), etc.
This patch allows the caller of rpc_run_task() to specify that the rpc_release callback should run on a different workqueue than the default rpciod_workqueue.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Tue, 19 Feb 2008 20:04:22 -0500
NFS: Add an nfsiod workqueue
NFS post-rpciod cleanups often involve tasks that cannot be safely performed within the rpciod context (due to deadlock concerns). We therefore add a dedicated NFS workqueue that can perform tasks like cleaning up state after an interrupted NFSv4 open() call, or calling put_nfs_open_context() after an asynchronous read or write call.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
From: Trond Myklebust <Trond.Myklebust@netapp.com>
Date: Tue, 19 Feb 2008 20:04:23 -0500
NFS: Ensure that the asynchronous RPC calls complete on nfsiod.
We want to ensure that rpc_call_ops that involve mntput() are run on nfsiod rather than on rpciod, so that they don't deadlock when the resulting umount calls rpc_shutdown_client(). Hence we specify that read, write and commit calls must complete on nfsiod. Ditto for NFSv4 open, lock, locku and close asynchronous calls.
Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Name | Last modified | Size | Description | |
---|---|---|---|---|
Parent Directory | - | |||
linux-2.6.25-001-fix..> | 2008-02-26 06:03 | 781 | ||
linux-2.6.25-002-fix..> | 2008-02-26 06:03 | 4.8K | ||
linux-2.6.25-003-all..> | 2008-02-26 06:03 | 3.5K | ||
linux-2.6.25-004-add..> | 2008-02-26 06:03 | 2.4K | ||
linux-2.6.25-005-ens..> | 2008-02-26 06:03 | 4.4K | ||
series | 2008-02-26 06:03 | 335 | ||