balance_pgdat() calls zone_watermark_ok() three times, the first call
passes a zero(0) in as the 4th argument.  This 4th argument is the
classzone_idx which is used as the index into the zone->lowmem_reserve[] array. Since setup_per_zone_lowmem_reserve()
always sets the zone->lowmem_reserve[0] = 0(because there is nothing
below the DMA zone), zone_watermark_ok() will not consider the
lowmem_reserve pages when zero is passed as the 4th arg.  Shouldnt this
4th argument be either "i" or "nr_zones - 1" ???

-------------------------------------------------------------------------
--- linux-2.6.24.noarch/mm/vmscan.c.orig        2008-02-13
11:14:55.000000000 -0500
+++ linux-2.6.24.noarch/mm/vmscan.c     2008-02-13 11:15:02.000000000
-0500
@@ -1375,7 +1375,7 @@ loop_again:
                               continue;

                       if (!zone_watermark_ok(zone, order, zone->pages_high,

-                                              0, 0)) {
+                                              i, 0)) {
                               end_zone = i;
                               break;
-------------------------------------------------------------------------
--- linux-2.6.24.noarch/mm/vmscan.c.orig        2008-02-13
11:14:55.000000000 -0500
+++ linux-2.6.24.noarch/mm/vmscan.c     2008-02-13 11:16:35.000000000
-0500
@@ -1375,7 +1375,7 @@ loop_again:
                               continue;

                       if (!zone_watermark_ok(zone, order, zone->pages_high,

-                                              0, 0)) {
+                                              nr_zones - 1, 0)) {
                               end_zone = i;
                               break;
                       }
-------------------------------------------------------------------------


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to