|
@@ -1051,20 +1051,23 @@ continue_unlock:
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (nr_to_write > 0)
|
|
|
+ if (nr_to_write > 0) {
|
|
|
nr_to_write--;
|
|
|
- else if (wbc->sync_mode == WB_SYNC_NONE) {
|
|
|
- /*
|
|
|
- * We stop writing back only if we are not
|
|
|
- * doing integrity sync. In case of integrity
|
|
|
- * sync we have to keep going because someone
|
|
|
- * may be concurrently dirtying pages, and we
|
|
|
- * might have synced a lot of newly appeared
|
|
|
- * dirty pages, but have not synced all of the
|
|
|
- * old dirty pages.
|
|
|
- */
|
|
|
- done = 1;
|
|
|
- break;
|
|
|
+ if (nr_to_write == 0 &&
|
|
|
+ wbc->sync_mode == WB_SYNC_NONE) {
|
|
|
+ /*
|
|
|
+ * We stop writing back only if we are
|
|
|
+ * not doing integrity sync. In case of
|
|
|
+ * integrity sync we have to keep going
|
|
|
+ * because someone may be concurrently
|
|
|
+ * dirtying pages, and we might have
|
|
|
+ * synced a lot of newly appeared dirty
|
|
|
+ * pages, but have not synced all of the
|
|
|
+ * old dirty pages.
|
|
|
+ */
|
|
|
+ done = 1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
if (wbc->nonblocking && bdi_write_congested(bdi)) {
|