diff options
Diffstat (limited to 'mm/page_alloc.c')
| -rw-r--r-- | mm/page_alloc.c | 9 | 
1 files changed, 9 insertions, 0 deletions
| diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 69827d4fa052..13cc653122b7 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -1607,6 +1607,7 @@ void set_zone_contiguous(struct zone *zone)  		if (!__pageblock_pfn_to_page(block_start_pfn,  					     block_end_pfn, zone))  			return; +		cond_resched();  	}  	/* We confirm that there is no hole */ @@ -2400,6 +2401,14 @@ static inline void boost_watermark(struct zone *zone)  	if (!watermark_boost_factor)  		return; +	/* +	 * Don't bother in zones that are unlikely to produce results. +	 * On small machines, including kdump capture kernels running +	 * in a small area, boosting the watermark can cause an out of +	 * memory situation immediately. +	 */ +	if ((pageblock_nr_pages * 4) > zone_managed_pages(zone)) +		return;  	max_boost = mult_frac(zone->_watermark[WMARK_HIGH],  			watermark_boost_factor, 10000); |