lkml.org 
[lkml]   [2013]   [May]   [2]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[RFC PATCH v3 09/31] page_alloc: in move_freepages(), skip pages instead of VM_BUG on node differences.
    Date
    With dynamic numa, pages are going to be gradully moved from one node to
    another, causing the page ranges that move_freepages() examines to
    contain pages that actually belong to another node.

    When dynamic numa is enabled, we skip these pages instead of VM_BUGing
    out on them.

    This additionally moves the VM_BUG_ON() (which detects a change in node)
    so that it follows the pfn_valid_within() check.

    Signed-off-by: Cody P Schafer <cody@linux.vnet.ibm.com>
    ---
    mm/page_alloc.c | 17 ++++++++++++++---
    1 file changed, 14 insertions(+), 3 deletions(-)

    diff --git a/mm/page_alloc.c b/mm/page_alloc.c
    index 739b405..657f773 100644
    --- a/mm/page_alloc.c
    +++ b/mm/page_alloc.c
    @@ -958,6 +958,7 @@ int move_freepages(struct zone *zone,
    struct page *page;
    unsigned long order;
    int pages_moved = 0;
    + int zone_nid = zone_to_nid(zone);

    #ifndef CONFIG_HOLES_IN_ZONE
    /*
    @@ -971,14 +972,24 @@ int move_freepages(struct zone *zone,
    #endif

    for (page = start_page; page <= end_page;) {
    - /* Make sure we are not inadvertently changing nodes */
    - VM_BUG_ON(page_to_nid(page) != zone_to_nid(zone));
    -
    if (!pfn_valid_within(page_to_pfn(page))) {
    page++;
    continue;
    }

    + if (page_to_nid(page) != zone_nid) {
    +#ifndef CONFIG_DYNAMIC_NUMA
    + /*
    + * In the normal case (without Dynamic NUMA), all pages
    + * in a pageblock should belong to the same zone (and
    + * as a result all have the same nid).
    + */
    + VM_BUG_ON(page_to_nid(page) != zone_nid);
    +#endif
    + page++;
    + continue;
    + }
    +
    if (!PageBuddy(page)) {
    page++;
    continue;
    --
    1.8.2.2


    \
     
     \ /
      Last update: 2013-05-03 02:21    [W:4.140 / U:1.152 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site