From fe36e5b0f3a3a36b1ee5e861624de591277e0a42 Mon Sep 17 00:00:00 2001 From: Christoph Lameter Date: Fri, 6 Jan 2006 00:10:45 -0800 Subject: [PATCH] --- yaml --- r: 16304 b: refs/heads/master c: 96df9333c94d7d5aeceb21f6c5e7ae8ff34753cf h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/mm/hugetlb.c | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/[refs] b/[refs] index fd1d87596b94..570a759233fe 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 1e8f889b10d8d2223105719e36ce45688fedbd59 +refs/heads/master: 96df9333c94d7d5aeceb21f6c5e7ae8ff34753cf diff --git a/trunk/mm/hugetlb.c b/trunk/mm/hugetlb.c index da8a211414c9..e93bd63462f0 100644 --- a/trunk/mm/hugetlb.c +++ b/trunk/mm/hugetlb.c @@ -40,14 +40,16 @@ static struct page *dequeue_huge_page(void) { int nid = numa_node_id(); struct page *page = NULL; + struct zonelist *zonelist = NODE_DATA(nid)->node_zonelists; + struct zone **z; - if (list_empty(&hugepage_freelists[nid])) { - for (nid = 0; nid < MAX_NUMNODES; ++nid) - if (!list_empty(&hugepage_freelists[nid])) - break; + for (z = zonelist->zones; *z; z++) { + nid = (*z)->zone_pgdat->node_id; + if (!list_empty(&hugepage_freelists[nid])) + break; } - if (nid >= 0 && nid < MAX_NUMNODES && - !list_empty(&hugepage_freelists[nid])) { + + if (*z) { page = list_entry(hugepage_freelists[nid].next, struct page, lru); list_del(&page->lru);