Skip to content
  • Vlastimil Babka's avatar
    mm, page_isolation: remove bogus tests for isolated pages · aa016d14
    Vlastimil Babka authored
    The __test_page_isolated_in_pageblock() is used to verify whether all
    pages in pageblock were either successfully isolated, or are hwpoisoned.
    Two of the possible state of pages, that are tested, are however bogus
    and misleading.
    
    Both tests rely on get_freepage_migratetype(page), which however has no
    guarantees about pages on freelists.  Specifically, it doesn't guarantee
    that the migratetype returned by the function actually matches the
    migratetype of the freelist that the page is on.  Such guarantee is not
    its purpose and would have negative impact on allocator performance.
    
    The first test checks whether the freepage_migratetype equals
    MIGRATE_ISOLATE, supposedly to catch races between page isolation and
    allocator activity.  These races should be fixed nowadays with
    51bb1a40
    
     ("mm/page_alloc: add freepage on isolate pageblock to correct
    buddy list") and related patches.  As explained above, the check
    wouldn't be able to catch them reliably anyway.  For the same reason
    false positives can happen, although they are harmless, as the
    move_freepages() call would just move the page to the same freelist it's
    already on.  So removing the test is not a bug fix, just cleanup.  After
    this patch, we assume that all PageBuddy pages are on the correct
    freelist and that the races were really fixed.  A truly reliable
    verification in the form of e.g.  VM_BUG_ON() would be complicated and
    is arguably not needed.
    
    The second test (page_count(page) == 0 && get_freepage_migratetype(page)
    == MIGRATE_ISOLATE) is probably supposed (the code comes from a big
    memory isolation patch from 2007) to catch pages on MIGRATE_ISOLATE
    pcplists.  However, pcplists don't contain MIGRATE_ISOLATE freepages
    nowadays, those are freed directly to free lists, so the check is
    obsolete.  Remove it as well.
    
    Signed-off-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Acked-by: default avatarJoonsoo Kim <iamjoonsoo.kim@lge.com>
    Cc: Minchan Kim <minchan@kernel.org>
    Acked-by: default avatarMichal Nazarewicz <mina86@mina86.com>
    Cc: Laura Abbott <lauraa@codeaurora.org>
    Reviewed-by: default avatarNaoya Horiguchi <n-horiguchi@ah.jp.nec.com>
    Cc: Seungho Park <seungho1.park@lge.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: "Kirill A. Shutemov" <kirill.shutemov@linux.intel.com>
    Acked-by: default avatarMel Gorman <mgorman@techsingularity.net>
    Cc: David Rientjes <rientjes@google.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    aa016d14