[PATCH] zoned vm counters: conversion of nr_dirty to 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 we summed up the page counts from multiple zones. Someone more familiar with NFS should probably review what I have done. [akpm@osdl.org: bugfix] 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>
This commit is contained in:
committed by
Linus Torvalds
parent
df849a1529
commit
b1e7a8fd85
@@ -497,7 +497,7 @@ nfs_mark_request_dirty(struct nfs_page *req)
|
||||
nfs_list_add_request(req, &nfsi->dirty);
|
||||
nfsi->ndirty++;
|
||||
spin_unlock(&nfsi->req_lock);
|
||||
inc_page_state(nr_dirty);
|
||||
inc_zone_page_state(req->wb_page, NR_FILE_DIRTY);
|
||||
mark_inode_dirty(inode);
|
||||
}
|
||||
|
||||
@@ -609,7 +609,6 @@ nfs_scan_dirty(struct inode *inode, struct list_head *dst, unsigned long idx_sta
|
||||
if (nfsi->ndirty != 0) {
|
||||
res = nfs_scan_lock_dirty(nfsi, dst, idx_start, npages);
|
||||
nfsi->ndirty -= res;
|
||||
sub_page_state(nr_dirty,res);
|
||||
if ((nfsi->ndirty == 0) != list_empty(&nfsi->dirty))
|
||||
printk(KERN_ERR "NFS: desynchronized value of nfs_i.ndirty.\n");
|
||||
}
|
||||
|
Reference in New Issue
Block a user