[PATCH] kswapd shall not sleep during page shortage

Marcelo Tosatti
2004-11-09T16:46:42Z

Andrew,

I was wrong last time I read balance_pgdat() when I thought kswapd
couldnt sleep under page shortage.

It can, because all_zones_ok is set to "1" inside the
"priority=DEF_PRIORITY; priority >= 0; priority--" loop.

So this patch sets "all_zones_ok" to zero even if all_unreclaimable
is set, avoiding it from sleeping when zones are under page short.

Please apply!

--- linux-2.6.10-rc1-mm2/mm/vmscan.c.orig 2004-11-09 16:38:04.480873424 -0200
+++ linux-2.6.10-rc1-mm2/mm/vmscan.c 2004-11-09 16:38:08.624243536 -0200
@@ -1033,15 +1033,17 @@
if (zone->present_pages == 0)
continue;

- if (zone->all_unreclaimable &&
- priority != DEF_PRIORITY)
- continue;
-
if (!zone_watermark_ok(zone, order,
zone->pages_high, 0, 0, 0)) {
end_zone = i;
- goto scan;
+ all_zones_ok = 0;
}
+
+ if (zone->all_unreclaimable &&
+ priority != DEF_PRIORITY)
+ continue;
+
+ goto scan;
}
goto out;
} else {