summaryrefslogtreecommitdiff
path: root/fs
diff options
context:
space:
mode:
authorTrond Myklebust <Trond.Myklebust@netapp.com>2006-12-05 05:36:56 (GMT)
committerTrond Myklebust <Trond.Myklebust@netapp.com>2006-12-06 15:46:41 (GMT)
commit9cf85e0a243b56f4ef8439a1e6430307fd9dcda6 (patch)
treec07fa0bb952827d76e556ac60a9310638e7a5d4a /fs
parent3925675cb37cc9c3fd1d3f56ce0fa729f995f863 (diff)
downloadlinux-9cf85e0a243b56f4ef8439a1e6430307fd9dcda6.tar.xz
NFS: Fix up writeback_control->nr_to_write accounting
We're really accounting for the same page twice now: once in generic_writepages(), and once in nfs_scan_dirty(). Signed-off-by: Trond Myklebust <Trond.Myklebust@netapp.com>
Diffstat (limited to 'fs')
-rw-r--r--fs/nfs/pagelist.c10
1 files changed, 1 insertions, 9 deletions
diff --git a/fs/nfs/pagelist.c b/fs/nfs/pagelist.c
index 47ae2b4d..bc9fab6 100644
--- a/fs/nfs/pagelist.c
+++ b/fs/nfs/pagelist.c
@@ -288,11 +288,10 @@ long nfs_scan_dirty(struct address_space *mapping,
struct nfs_page *pgvec[NFS_SCAN_MAXENTRIES];
struct nfs_page *req;
pgoff_t idx_start, idx_end;
- long count = wbc->nr_to_write;
long res = 0;
int found, i;
- if (nfsi->ndirty == 0 || count <= 0)
+ if (nfsi->ndirty == 0)
return 0;
if (wbc->range_cyclic) {
idx_start = 0;
@@ -308,8 +307,6 @@ long nfs_scan_dirty(struct address_space *mapping,
for (;;) {
unsigned int toscan = NFS_SCAN_MAXENTRIES;
- if (toscan > count)
- toscan = count;
found = radix_tree_gang_lookup_tag(&nfsi->nfs_page_tree,
(void **)&pgvec[0], idx_start, toscan,
NFS_PAGE_TAG_DIRTY);
@@ -334,16 +331,11 @@ long nfs_scan_dirty(struct address_space *mapping,
res++;
if (res == LONG_MAX)
goto out;
- count--;
- if (count == 0)
- goto out;
-
next:
idx_start = req->wb_index + 1;
}
}
out:
- wbc->nr_to_write = count;
WARN_ON ((nfsi->ndirty == 0) != list_empty(&nfsi->dirty));
return res;
}