diff options
Diffstat (limited to 'mm/page_alloc.c')
| -rw-r--r-- | mm/page_alloc.c | 13 | 
1 files changed, 8 insertions, 5 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c index 6d30e914afb6..6d00f746c2fd 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c @@ -4458,8 +4458,9 @@ long si_mem_available(void)  	 * Part of the reclaimable slab consists of items that are in use,  	 * and cannot be freed. Cap this estimate at the low watermark.  	 */ -	available += global_page_state(NR_SLAB_RECLAIMABLE) - -		     min(global_page_state(NR_SLAB_RECLAIMABLE) / 2, wmark_low); +	available += global_node_page_state(NR_SLAB_RECLAIMABLE) - +		     min(global_node_page_state(NR_SLAB_RECLAIMABLE) / 2, +			 wmark_low);  	if (available < 0)  		available = 0; @@ -4602,8 +4603,8 @@ void show_free_areas(unsigned int filter, nodemask_t *nodemask)  		global_node_page_state(NR_FILE_DIRTY),  		global_node_page_state(NR_WRITEBACK),  		global_node_page_state(NR_UNSTABLE_NFS), -		global_page_state(NR_SLAB_RECLAIMABLE), -		global_page_state(NR_SLAB_UNRECLAIMABLE), +		global_node_page_state(NR_SLAB_RECLAIMABLE), +		global_node_page_state(NR_SLAB_UNRECLAIMABLE),  		global_node_page_state(NR_FILE_MAPPED),  		global_node_page_state(NR_SHMEM),  		global_page_state(NR_PAGETABLE), @@ -4891,9 +4892,11 @@ int numa_zonelist_order_handler(struct ctl_table *table, int write,  				NUMA_ZONELIST_ORDER_LEN);  			user_zonelist_order = oldval;  		} else if (oldval != user_zonelist_order) { +			mem_hotplug_begin();  			mutex_lock(&zonelists_mutex);  			build_all_zonelists(NULL, NULL);  			mutex_unlock(&zonelists_mutex); +			mem_hotplug_done();  		}  	}  out: @@ -7666,7 +7669,7 @@ int alloc_contig_range(unsigned long start, unsigned long end,  	/* Make sure the range is really isolated. */  	if (test_pages_isolated(outer_start, end, false)) { -		pr_info("%s: [%lx, %lx) PFNs busy\n", +		pr_info_ratelimited("%s: [%lx, %lx) PFNs busy\n",  			__func__, outer_start, end);  		ret = -EBUSY;  		goto done;  |