|
@@ -876,6 +876,7 @@ int write_cache_pages(struct address_space *mapping,
|
|
|
pgoff_t end; /* Inclusive */
|
|
|
int scanned = 0;
|
|
|
int range_whole = 0;
|
|
|
+ long nr_to_write = wbc->nr_to_write;
|
|
|
|
|
|
if (wbc->nonblocking && bdi_write_congested(bdi)) {
|
|
|
wbc->encountered_congestion = 1;
|
|
@@ -939,7 +940,7 @@ retry:
|
|
|
unlock_page(page);
|
|
|
ret = 0;
|
|
|
}
|
|
|
- if (ret || (--(wbc->nr_to_write) <= 0))
|
|
|
+ if (ret || (--nr_to_write <= 0))
|
|
|
done = 1;
|
|
|
if (wbc->nonblocking && bdi_write_congested(bdi)) {
|
|
|
wbc->encountered_congestion = 1;
|
|
@@ -958,8 +959,11 @@ retry:
|
|
|
index = 0;
|
|
|
goto retry;
|
|
|
}
|
|
|
- if (wbc->range_cyclic || (range_whole && wbc->nr_to_write > 0))
|
|
|
- mapping->writeback_index = index;
|
|
|
+ if (!wbc->no_nrwrite_index_update) {
|
|
|
+ if (wbc->range_cyclic || (range_whole && nr_to_write > 0))
|
|
|
+ mapping->writeback_index = index;
|
|
|
+ wbc->nr_to_write = nr_to_write;
|
|
|
+ }
|
|
|
|
|
|
return ret;
|
|
|
}
|