Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 42c722d4 authored by Christoph Lameter's avatar Christoph Lameter Committed by Linus Torvalds
Browse files

[PATCH] zone_reclaim: reclaim on memory only node support



Zone reclaim is usually only run on the local node.  Headless nodes do not
have any local processors.  This patch checks for headless nodes and
performs zone reclaim on them.

Signed-off-by: default avatarChristoph Lameter <clameter@sgi.com>
Signed-off-by: default avatarAndy Whitcroft <apw@shadowen.org>
Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 89288623
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -1599,17 +1599,23 @@ int zone_reclaim(struct zone *zone, gfp_t gfp_mask, unsigned int order)
	struct task_struct *p = current;
	struct reclaim_state reclaim_state;
	struct scan_control sc;
	cpumask_t mask;
	int node_id;

	if (time_before(jiffies,
		zone->last_unsuccessful_zone_reclaim + ZONE_RECLAIM_INTERVAL))
			return 0;

	if (!(gfp_mask & __GFP_WAIT) ||
		zone->zone_pgdat->node_id != numa_node_id() ||
		zone->all_unreclaimable ||
		atomic_read(&zone->reclaim_in_progress) > 0)
			return 0;

	node_id = zone->zone_pgdat->node_id;
	mask = node_to_cpumask(node_id);
	if (!cpus_empty(mask) && node_id != numa_node_id())
		return 0;

	sc.may_writepage = 0;
	sc.may_swap = 0;
	sc.nr_scanned = 0;