diff options
author | Christoph Lameter <clameter@sgi.com> | 2006-06-30 04:55:40 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-06-30 14:25:36 -0400 |
commit | fd39fc8561be33065306bdac0e30414e1e8ac8e1 (patch) | |
tree | ae0740716eed3f850a8f7232c61caebe360bb5ae /fs/nfs/write.c | |
parent | ce866b34ae1b7f1ce60234cf65855886ac7e7d30 (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.c | 6 |
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 | ||
1439 | static const struct rpc_call_ops nfs_commit_ops = { | 1437 | static const struct rpc_call_ops nfs_commit_ops = { |