Commit 9cf85e0a authored by Trond Myklebust's avatar Trond Myklebust
Browse files

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: default avatarTrond Myklebust <Trond.Myklebust@netapp.com>
parent 3925675c
Loading
Loading
Loading
Loading
+1 −9
Original line number Diff line number Diff line
@@ -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;
}