linux-mm.kvack.org archive mirror
 help / color / mirror / Atom feed
From: Gavin Shan <shangw@linux.vnet.ibm.com>
To: linux-mm@kvack.org
Cc: hannes@cmpxchg.org, akpm@linux-foundation.org,
	Gavin Shan <shangw@linux.vnet.ibm.com>
Subject: [PATCH] mm/buddy: fix default NUMA nodes
Date: Sun, 10 Jun 2012 00:11:27 +0900	[thread overview]
Message-ID: <1339254687-13447-1-git-send-email-shangw@linux.vnet.ibm.com> (raw)

In the core function __alloc_pages_nodemask() of buddy allocator,
the NUMA nodes would be allowed nodes of current process or online
high memory nodes if the nodemask passed into the function is NULL.
However, the current implementation of function __alloc_pages_nodemask()
might retrieve the preferred zones from the allowed nodes of current
process or online high memory nodes, but never use that in the case.

The patch fixes that. When the nodemask passed into __alloc_pages_nodemask()
is NULL. We will always use the nodemask from the allowed one of
current process or online high memory nodes.

Signed-off-by: Gavin Shan <shangw@linux.vnet.ibm.com>
---
 mm/page_alloc.c |   12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index 7892f84..dda83c5 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -2474,6 +2474,7 @@ struct page *
 __alloc_pages_nodemask(gfp_t gfp_mask, unsigned int order,
 			struct zonelist *zonelist, nodemask_t *nodemask)
 {
+	nodemask_t *preferred_nodemask = nodemask ? : &cpuset_current_mems_allowed;
 	enum zone_type high_zoneidx = gfp_zone(gfp_mask);
 	struct zone *preferred_zone;
 	struct page *page = NULL;
@@ -2501,19 +2502,18 @@ retry_cpuset:
 	cpuset_mems_cookie = get_mems_allowed();
 
 	/* The preferred zone is used for statistics later */
-	first_zones_zonelist(zonelist, high_zoneidx,
-				nodemask ? : &cpuset_current_mems_allowed,
+	first_zones_zonelist(zonelist, high_zoneidx, preferred_nodemask,
 				&preferred_zone);
 	if (!preferred_zone)
 		goto out;
 
 	/* First allocation attempt */
-	page = get_page_from_freelist(gfp_mask|__GFP_HARDWALL, nodemask, order,
-			zonelist, high_zoneidx, ALLOC_WMARK_LOW|ALLOC_CPUSET,
+	page = get_page_from_freelist(gfp_mask|__GFP_HARDWALL, preferred_nodemask,
+			order, zonelist, high_zoneidx, ALLOC_WMARK_LOW|ALLOC_CPUSET,
 			preferred_zone, migratetype);
 	if (unlikely(!page))
-		page = __alloc_pages_slowpath(gfp_mask, order,
-				zonelist, high_zoneidx, nodemask,
+		page = __alloc_pages_slowpath(gfp_mask, order, zonelist,
+				high_zoneidx, preferred_nodemask,
 				preferred_zone, migratetype);
 
 	trace_mm_page_alloc(page, order, gfp_mask, migratetype);
-- 
1.7.9.5

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>

             reply	other threads:[~2012-06-09 15:12 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2012-06-09 15:11 Gavin Shan [this message]
2012-06-10 20:52 ` [PATCH] mm/buddy: fix default NUMA nodes David Rientjes
2012-06-11  3:41   ` Gavin Shan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1339254687-13447-1-git-send-email-shangw@linux.vnet.ibm.com \
    --to=shangw@linux.vnet.ibm.com \
    --cc=akpm@linux-foundation.org \
    --cc=hannes@cmpxchg.org \
    --cc=linux-mm@kvack.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).