|
@@ -97,6 +97,14 @@ EXPORT_SYMBOL(node_states);
|
|
|
|
|
|
unsigned long totalram_pages __read_mostly;
|
|
|
unsigned long totalreserve_pages __read_mostly;
|
|
|
+/*
|
|
|
+ * When calculating the number of globally allowed dirty pages, there
|
|
|
+ * is a certain number of per-zone reserves that should not be
|
|
|
+ * considered dirtyable memory. This is the sum of those reserves
|
|
|
+ * over all existing zones that contribute dirtyable memory.
|
|
|
+ */
|
|
|
+unsigned long dirty_balance_reserve __read_mostly;
|
|
|
+
|
|
|
int percpu_pagelist_fraction;
|
|
|
gfp_t gfp_allowed_mask __read_mostly = GFP_BOOT_MASK;
|
|
|
|
|
@@ -4822,8 +4830,19 @@ static void calculate_totalreserve_pages(void)
|
|
|
if (max > zone->present_pages)
|
|
|
max = zone->present_pages;
|
|
|
reserve_pages += max;
|
|
|
+ /*
|
|
|
+ * Lowmem reserves are not available to
|
|
|
+ * GFP_HIGHUSER page cache allocations and
|
|
|
+ * kswapd tries to balance zones to their high
|
|
|
+ * watermark. As a result, neither should be
|
|
|
+ * regarded as dirtyable memory, to prevent a
|
|
|
+ * situation where reclaim has to clean pages
|
|
|
+ * in order to balance the zones.
|
|
|
+ */
|
|
|
+ zone->dirty_balance_reserve = max;
|
|
|
}
|
|
|
}
|
|
|
+ dirty_balance_reserve = reserve_pages;
|
|
|
totalreserve_pages = reserve_pages;
|
|
|
}
|
|
|
|