aboutsummaryrefslogtreecommitdiffstats
path: root/fs/nfs/write.c
diff options
context:
space:
mode:
authorChristoph Lameter <clameter@sgi.com>2006-06-30 04:55:40 -0400
committerLinus Torvalds <torvalds@g5.osdl.org>2006-06-30 14:25:36 -0400
commitfd39fc8561be33065306bdac0e30414e1e8ac8e1 (patch)
treeae0740716eed3f850a8f7232c61caebe360bb5ae /fs/nfs/write.c
parentce866b34ae1b7f1ce60234cf65855886ac7e7d30 (diff)
[PATCH] zoned vm counters: conversion of nr_unstable to per zone counter
Conversion of nr_unstable to a per zone counter We need to do some special modifications to the nfs code since there are multiple cases of disposition and we need to have a page ref for proper accounting. This converts the last critical page state of the VM and therefore we need to remove several functions that were depending on GET_PAGE_STATE_LAST in order to make the kernel compile again. We are only left with event type counters in page state. [akpm@osdl.org: bugfixes] Signed-off-by: Christoph Lameter <clameter@sgi.com> Cc: Trond Myklebust <trond.myklebust@fys.uio.no> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Diffstat (limited to 'fs/nfs/write.c')
-rw-r--r--fs/nfs/write.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/fs/nfs/write.c b/fs/nfs/write.c
index a6d1ca513dde..f21e268705c0 100644
--- a/fs/nfs/write.c
+++ b/fs/nfs/write.c
@@ -525,7 +525,7 @@ nfs_mark_request_commit(struct nfs_page *req)
525 nfs_list_add_request(req, &nfsi->commit); 525 nfs_list_add_request(req, &nfsi->commit);
526 nfsi->ncommit++; 526 nfsi->ncommit++;
527 spin_unlock(&nfsi->req_lock); 527 spin_unlock(&nfsi->req_lock);
528 inc_page_state(nr_unstable); 528 inc_zone_page_state(req->wb_page, NR_UNSTABLE_NFS);
529 mark_inode_dirty(inode); 529 mark_inode_dirty(inode);
530} 530}
531#endif 531#endif
@@ -1393,7 +1393,6 @@ static void nfs_commit_done(struct rpc_task *task, void *calldata)
1393{ 1393{
1394 struct nfs_write_data *data = calldata; 1394 struct nfs_write_data *data = calldata;
1395 struct nfs_page *req; 1395 struct nfs_page *req;
1396 int res = 0;
1397 1396
1398 dprintk("NFS: %4d nfs_commit_done (status %d)\n", 1397 dprintk("NFS: %4d nfs_commit_done (status %d)\n",
1399 task->tk_pid, task->tk_status); 1398 task->tk_pid, task->tk_status);
@@ -1405,6 +1404,7 @@ static void nfs_commit_done(struct rpc_task *task, void *calldata)
1405 while (!list_empty(&data->pages)) { 1404 while (!list_empty(&data->pages)) {
1406 req = nfs_list_entry(data->pages.next); 1405 req = nfs_list_entry(data->pages.next);
1407 nfs_list_remove_request(req); 1406 nfs_list_remove_request(req);
1407 dec_zone_page_state(req->wb_page, NR_UNSTABLE_NFS);
1408 1408
1409 dprintk("NFS: commit (%s/%Ld %d@%Ld)", 1409 dprintk("NFS: commit (%s/%Ld %d@%Ld)",
1410 req->wb_context->dentry->d_inode->i_sb->s_id, 1410 req->wb_context->dentry->d_inode->i_sb->s_id,
@@ -1431,9 +1431,7 @@ static void nfs_commit_done(struct rpc_task *task, void *calldata)
1431 nfs_mark_request_dirty(req); 1431 nfs_mark_request_dirty(req);
1432 next: 1432 next:
1433 nfs_clear_page_writeback(req); 1433 nfs_clear_page_writeback(req);
1434 res++;
1435 } 1434 }
1436 sub_page_state(nr_unstable,res);
1437} 1435}
1438 1436
1439static const struct rpc_call_ops nfs_commit_ops = { 1437static const struct rpc_call_ops nfs_commit_ops = {