From: Christoph Lameter Conversion of nr_dirty to a per zone counter This makes nr_dirty a per zone counter. Looping over all processors is avoided during writeback state determination. The counter aggregation for nr_dirty had to be undone in the NFS layer since it summed up the page counts from multiple zones. Signed-off-by: Christoph Lameter Signed-off-by: Andrew Morton --- fs/reiser4/as_ops.c | 2 +- fs/reiser4/page_cache.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff -puN fs/reiser4/as_ops.c~reiser4-conversion-of-nr_dirty-to-per-zone-counter fs/reiser4/as_ops.c --- devel/fs/reiser4/as_ops.c~reiser4-conversion-of-nr_dirty-to-per-zone-counter 2006-06-09 02:50:49.000000000 -0700 +++ devel-akpm/fs/reiser4/as_ops.c 2006-06-09 02:50:49.000000000 -0700 @@ -83,7 +83,7 @@ int reiser4_set_page_dirty(struct page * if (page->mapping) { assert("vs-1652", page->mapping == mapping); if (mapping_cap_account_dirty(mapping)) - inc_page_state(nr_dirty); + __inc_zone_page_state(page, NR_DIRTY); radix_tree_tag_set(&mapping->page_tree, page->index, PAGECACHE_TAG_REISER4_MOVED); diff -puN fs/reiser4/page_cache.c~reiser4-conversion-of-nr_dirty-to-per-zone-counter fs/reiser4/page_cache.c --- devel/fs/reiser4/page_cache.c~reiser4-conversion-of-nr_dirty-to-per-zone-counter 2006-06-09 02:50:49.000000000 -0700 +++ devel-akpm/fs/reiser4/page_cache.c 2006-06-09 02:50:49.000000000 -0700 @@ -464,7 +464,7 @@ int set_page_dirty_internal(struct page if (!TestSetPageDirty(page)) { if (mapping_cap_account_dirty(mapping)) - inc_page_state(nr_dirty); + inc_zone_page_state(page, NR_DIRTY); __mark_inode_dirty(mapping->host, I_DIRTY_PAGES); } _