···1212 *1313 * (thresh - thresh/DIRTY_FULL_SCOPE, thresh)1414 *1515- * The 1/16 region above the global dirty limit will be put to maximum pauses:1616- *1717- * (limit, limit + limit/DIRTY_MAXPAUSE_AREA)1818- *1919- * The 1/16 region above the max-pause region, dirty exceeded bdi's will be put2020- * to loops:2121- *2222- * (limit + limit/DIRTY_MAXPAUSE_AREA, limit + limit/DIRTY_PASSGOOD_AREA)2323- *2415 * Further beyond, all dirtier tasks will enter a loop waiting (possibly long2516 * time) for the dirty pages to drop, unless written enough pages.2617 *···2231 */2332#define DIRTY_SCOPE 82433#define DIRTY_FULL_SCOPE (DIRTY_SCOPE / 2)2525-#define DIRTY_MAXPAUSE_AREA 162626-#define DIRTY_PASSGOOD_AREA 827342835/*2936 * 4MB minimal write chunk size
+2-13
mm/page-writeback.c
···754754 * 200ms is typically more than enough to curb heavy dirtiers;755755 * (b) the pause time limit makes the dirtiers more responsive.756756 */757757- if (nr_dirty < dirty_thresh +758758- dirty_thresh / DIRTY_MAXPAUSE_AREA &&757757+ if (nr_dirty < dirty_thresh &&758758+ bdi_dirty < (task_bdi_thresh + bdi_thresh) / 2 &&759759 time_after(jiffies, start_time + MAX_PAUSE))760760- break;761761- /*762762- * pass-good area. When some bdi gets blocked (eg. NFS server763763- * not responding), or write bandwidth dropped dramatically due764764- * to concurrent reads, or dirty threshold suddenly dropped and765765- * the dirty pages cannot be brought down anytime soon (eg. on766766- * slow USB stick), at least let go of the good bdi's.767767- */768768- if (nr_dirty < dirty_thresh +769769- dirty_thresh / DIRTY_PASSGOOD_AREA &&770770- bdi_dirty < bdi_thresh)771760 break;772761773762 /*