aboutsummaryrefslogtreecommitdiffstats
path: root/mm/page_alloc.c
diff options
context:
space:
mode:
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r--mm/page_alloc.c19
1 files changed, 19 insertions, 0 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 93baebcc06f3..2cb9eb71e282 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -97,6 +97,14 @@ EXPORT_SYMBOL(node_states);
97 97
98unsigned long totalram_pages __read_mostly; 98unsigned long totalram_pages __read_mostly;
99unsigned long totalreserve_pages __read_mostly; 99unsigned long totalreserve_pages __read_mostly;
100/*
101 * When calculating the number of globally allowed dirty pages, there
102 * is a certain number of per-zone reserves that should not be
103 * considered dirtyable memory. This is the sum of those reserves
104 * over all existing zones that contribute dirtyable memory.
105 */
106unsigned long dirty_balance_reserve __read_mostly;
107
100int percpu_pagelist_fraction; 108int percpu_pagelist_fraction;
101gfp_t gfp_allowed_mask __read_mostly = GFP_BOOT_MASK; 109gfp_t gfp_allowed_mask __read_mostly = GFP_BOOT_MASK;
102 110
@@ -4822,8 +4830,19 @@ static void calculate_totalreserve_pages(void)
4822 if (max > zone->present_pages) 4830 if (max > zone->present_pages)
4823 max = zone->present_pages; 4831 max = zone->present_pages;
4824 reserve_pages += max; 4832 reserve_pages += max;
4833 /*
4834 * Lowmem reserves are not available to
4835 * GFP_HIGHUSER page cache allocations and
4836 * kswapd tries to balance zones to their high
4837 * watermark. As a result, neither should be
4838 * regarded as dirtyable memory, to prevent a
4839 * situation where reclaim has to clean pages
4840 * in order to balance the zones.
4841 */
4842 zone->dirty_balance_reserve = max;
4825 } 4843 }
4826 } 4844 }
4845 dirty_balance_reserve = reserve_pages;
4827 totalreserve_pages = reserve_pages; 4846 totalreserve_pages = reserve_pages;
4828} 4847}
4829 4848