Nick Piggin <piggin@xxxxxxxxxxxxxxx> wrote:
Nick Piggin wrote:
Humph. OK you're right.
Aha but you've broken something!
I'm a microsoft spy.
Tell me I'm still useful.
You're still useful.
diff -puN mm/vmscan.c~vm-fix-all_zones_ok mm/vmscan.c
--- linux-2.6/mm/vmscan.c~vm-fix-all_zones_ok 2004-02-23 19:44:06.000000000 +1100
+++ linux-2.6-npiggin/mm/vmscan.c 2004-02-23 19:45:10.000000000 +1100
@@ -1008,10 +1008,12 @@ static int balance_pgdat(pg_data_t *pgda
if (nr_pages) /* Software suspend */
to_reclaim = min(to_free, SWAP_CLUSTER_MAX*8);
- else /* Zone balancing */
+ else { /* Zone balancing */
to_reclaim = zone->reclaim_batch;
+ if (zone->pages_high < zone->free_pages)
+ all_zones_ok = 0;
+ }
I wouldna spotted that in a million years. That all_zones_ok code was a
bitch to test and really needs retesting.