diff options
Diffstat (limited to 'mm')
| -rw-r--r-- | mm/page-writeback.c | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/mm/page-writeback.c b/mm/page-writeback.c index 5240e426c1f7..945559fb63d2 100644 --- a/mm/page-writeback.c +++ b/mm/page-writeback.c | |||
| @@ -46,7 +46,7 @@ | |||
| 46 | static long ratelimit_pages = 32; | 46 | static long ratelimit_pages = 32; |
| 47 | 47 | ||
| 48 | static long total_pages; /* The total number of pages in the machine. */ | 48 | static long total_pages; /* The total number of pages in the machine. */ |
| 49 | static int dirty_exceeded; /* Dirty mem may be over limit */ | 49 | static int dirty_exceeded __cacheline_aligned_in_smp; /* Dirty mem may be over limit */ |
| 50 | 50 | ||
| 51 | /* | 51 | /* |
| 52 | * When balance_dirty_pages decides that the caller needs to perform some | 52 | * When balance_dirty_pages decides that the caller needs to perform some |
| @@ -212,7 +212,8 @@ static void balance_dirty_pages(struct address_space *mapping) | |||
| 212 | if (nr_reclaimable + wbs.nr_writeback <= dirty_thresh) | 212 | if (nr_reclaimable + wbs.nr_writeback <= dirty_thresh) |
| 213 | break; | 213 | break; |
| 214 | 214 | ||
| 215 | dirty_exceeded = 1; | 215 | if (!dirty_exceeded) |
| 216 | dirty_exceeded = 1; | ||
| 216 | 217 | ||
| 217 | /* Note: nr_reclaimable denotes nr_dirty + nr_unstable. | 218 | /* Note: nr_reclaimable denotes nr_dirty + nr_unstable. |
| 218 | * Unstable writes are a feature of certain networked | 219 | * Unstable writes are a feature of certain networked |
| @@ -234,7 +235,7 @@ static void balance_dirty_pages(struct address_space *mapping) | |||
| 234 | blk_congestion_wait(WRITE, HZ/10); | 235 | blk_congestion_wait(WRITE, HZ/10); |
| 235 | } | 236 | } |
| 236 | 237 | ||
| 237 | if (nr_reclaimable + wbs.nr_writeback <= dirty_thresh) | 238 | if (nr_reclaimable + wbs.nr_writeback <= dirty_thresh && dirty_exceeded) |
| 238 | dirty_exceeded = 0; | 239 | dirty_exceeded = 0; |
| 239 | 240 | ||
| 240 | if (writeback_in_progress(bdi)) | 241 | if (writeback_in_progress(bdi)) |
