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 | |
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')
-rw-r--r-- | fs/fs-writeback.c | 2 | ||||
-rw-r--r-- | fs/nfs/write.c | 6 | ||||
-rw-r--r-- | fs/proc/proc_misc.c | 4 |
3 files changed, 5 insertions, 7 deletions
diff --git a/fs/fs-writeback.c b/fs/fs-writeback.c index e5ad10756848..892643dc9af1 100644 --- a/fs/fs-writeback.c +++ b/fs/fs-writeback.c | |||
@@ -465,7 +465,7 @@ void sync_inodes_sb(struct super_block *sb, int wait) | |||
465 | .range_end = LLONG_MAX, | 465 | .range_end = LLONG_MAX, |
466 | }; | 466 | }; |
467 | unsigned long nr_dirty = global_page_state(NR_FILE_DIRTY); | 467 | unsigned long nr_dirty = global_page_state(NR_FILE_DIRTY); |
468 | unsigned long nr_unstable = read_page_state(nr_unstable); | 468 | unsigned long nr_unstable = global_page_state(NR_UNSTABLE_NFS); |
469 | 469 | ||
470 | wbc.nr_to_write = nr_dirty + nr_unstable + | 470 | wbc.nr_to_write = nr_dirty + nr_unstable + |
471 | (inodes_stat.nr_inodes - inodes_stat.nr_unused) + | 471 | (inodes_stat.nr_inodes - inodes_stat.nr_unused) + |
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 = { |
diff --git a/fs/proc/proc_misc.c b/fs/proc/proc_misc.c index 48cb35862445..eae66b41a1a4 100644 --- a/fs/proc/proc_misc.c +++ b/fs/proc/proc_misc.c | |||
@@ -120,7 +120,6 @@ static int meminfo_read_proc(char *page, char **start, off_t off, | |||
120 | { | 120 | { |
121 | struct sysinfo i; | 121 | struct sysinfo i; |
122 | int len; | 122 | int len; |
123 | struct page_state ps; | ||
124 | unsigned long inactive; | 123 | unsigned long inactive; |
125 | unsigned long active; | 124 | unsigned long active; |
126 | unsigned long free; | 125 | unsigned long free; |
@@ -129,7 +128,6 @@ static int meminfo_read_proc(char *page, char **start, off_t off, | |||
129 | struct vmalloc_info vmi; | 128 | struct vmalloc_info vmi; |
130 | long cached; | 129 | long cached; |
131 | 130 | ||
132 | get_page_state(&ps); | ||
133 | get_zone_counts(&active, &inactive, &free); | 131 | get_zone_counts(&active, &inactive, &free); |
134 | 132 | ||
135 | /* | 133 | /* |
@@ -172,6 +170,7 @@ static int meminfo_read_proc(char *page, char **start, off_t off, | |||
172 | "Mapped: %8lu kB\n" | 170 | "Mapped: %8lu kB\n" |
173 | "Slab: %8lu kB\n" | 171 | "Slab: %8lu kB\n" |
174 | "PageTables: %8lu kB\n" | 172 | "PageTables: %8lu kB\n" |
173 | "NFS Unstable: %8lu kB\n" | ||
175 | "CommitLimit: %8lu kB\n" | 174 | "CommitLimit: %8lu kB\n" |
176 | "Committed_AS: %8lu kB\n" | 175 | "Committed_AS: %8lu kB\n" |
177 | "VmallocTotal: %8lu kB\n" | 176 | "VmallocTotal: %8lu kB\n" |
@@ -196,6 +195,7 @@ static int meminfo_read_proc(char *page, char **start, off_t off, | |||
196 | K(global_page_state(NR_FILE_MAPPED)), | 195 | K(global_page_state(NR_FILE_MAPPED)), |
197 | K(global_page_state(NR_SLAB)), | 196 | K(global_page_state(NR_SLAB)), |
198 | K(global_page_state(NR_PAGETABLE)), | 197 | K(global_page_state(NR_PAGETABLE)), |
198 | K(global_page_state(NR_UNSTABLE_NFS)), | ||
199 | K(allowed), | 199 | K(allowed), |
200 | K(committed), | 200 | K(committed), |
201 | (unsigned long)VMALLOC_TOTAL >> 10, | 201 | (unsigned long)VMALLOC_TOTAL >> 10, |