aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/write.c
diff options
context:
space:
mode:
authorChuck Lever <cel@netapp.com>2006-03-20 13:44:32 -0500
committerTrond Myklebust <Trond.Myklebust@netapp.com>2006-03-20 13:44:32 -0500
commit462d5b3296b56289efec426499a83faad4c08d9e (patch)
treeeb4f9a0418e1190958603360cf9bcea0cbb67727 /fs/nfs/write.c
parent63ab46abc70b01cb0711301f5ddb08c1c0bb9b1c (diff)
NFS: make direct write path generate write requests concurrently
Duplicate infrastructure from direct read path that will allow write path to generate multiple write requests concurrently. This will enable us to add support for aio in this path. Temporarily we will lose the ability to do UNSTABLE writes followed by a COMMIT in the direct write path. However, all applications I am aware of that use NFS O_DIRECT currently write in relatively small chunks, so this should not be inconvenient in any way. Test plan: Millions of fsx-odirect ops. OraSim. Signed-off-by: Chuck Lever <cel@netapp.com> Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs/nfs/write.c')
-rw-r--r--fs/nfs/write.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index 5912274ff1a1..875f5b060533 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -77,7 +77,6 @@ static struct nfs_page * nfs_update_request(struct nfs_open_context*,
77 struct inode *, 77 struct inode *,
78 struct page *, 78 struct page *,
79 unsigned int, unsigned int); 79 unsigned int, unsigned int);
80static int nfs_writeback_done(struct rpc_task *, struct nfs_write_data *);
81static int nfs_wait_on_write_congestion(struct address_space *, int); 80static int nfs_wait_on_write_congestion(struct address_space *, int);
82static int nfs_wait_on_requests(struct inode *, unsigned long, unsigned int); 81static int nfs_wait_on_requests(struct inode *, unsigned long, unsigned int);
83static int nfs_flush_inode(struct inode *inode, unsigned long idx_start, 82static int nfs_flush_inode(struct inode *inode, unsigned long idx_start,
@@ -1183,7 +1182,7 @@ static const struct rpc_call_ops nfs_write_full_ops = {
1183/* 1182/*
1184 * This function is called when the WRITE call is complete. 1183 * This function is called when the WRITE call is complete.
1185 */ 1184 */
1186static int nfs_writeback_done(struct rpc_task *task, struct nfs_write_data *data) 1185int nfs_writeback_done(struct rpc_task *task, struct nfs_write_data *data)
1187{ 1186{
1188 struct nfs_writeargs *argp = &data->args; 1187 struct nfs_writeargs *argp = &data->args;
1189 struct nfs_writeres *resp = &data->res; 1188 struct nfs_writeres *resp = &data->res;