• David Hildenbrand's avatar
    mm/page_alloc: use folio_mapped() in __alloc_contig_migrate_range() · 7115936a
    David Hildenbrand authored
    We want to limit the use of page_mapcount() to the places where it is
    absolutely necessary.
    
    For tracing purposes, we use page_mapcount() in
    __alloc_contig_migrate_range().  Adding that mapcount to total_mapped
    sounds strange: total_migrated and total_reclaimed would count each page
    only once, not multiple times.
    
    But then, isolate_migratepages_range() adds each folio only once to the
    list.  So for large folios, we would query the mapcount of the first page
    of the folio, which doesn't make too much sense for large folios.
    
    Let's simply use folio_mapped() * folio_nr_pages(), which makes more sense
    as nr_migratepages is also incremented by the number of pages in the folio
    in case of successful migration.
    
    Link: https://lkml.kernel.org/r/20240409192301.907377-11-david@redhat.comSigned-off-by: default avatarDavid Hildenbrand <david@redhat.com>
    Cc: Chris Zankel <chris@zankel.net>
    Cc: Hugh Dickins <hughd@google.com>
    Cc: John Paul Adrian Glaubitz <glaubitz@physik.fu-berlin.de>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Matthew Wilcox (Oracle) <willy@infradead.org>
    Cc: Max Filippov <jcmvbkbc@gmail.com>
    Cc: Miaohe Lin <linmiaohe@huawei.com>
    Cc: Muchun Song <muchun.song@linux.dev>
    Cc: Naoya Horiguchi <nao.horiguchi@gmail.com>
    Cc: Peter Xu <peterx@redhat.com>
    Cc: Richard Chang <richardycc@google.com>
    Cc: Rich Felker <dalias@libc.org>
    Cc: Ryan Roberts <ryan.roberts@arm.com>
    Cc: Yang Shi <shy828301@gmail.com>
    Cc: Yin Fengwei <fengwei.yin@intel.com>
    Cc: Yoshinori Sato <ysato@users.sourceforge.jp>
    Cc: Zi Yan <ziy@nvidia.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    7115936a
page_alloc.c 194 KB