}
                        }
 
-                       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)) {