• Oscar Salvador's avatar
    mm,page_owner: update metadata for tail pages · ea4b5b33
    Oscar Salvador authored
    Patch series "page_owner: Fix refcount imbalance and print fixup", v4.
    
    This series consists of a refactoring/correctness of updating the metadata
    of tail pages, a couple of fixups for the refcounting part and a fixup for
    the stack_start() function.
    
    From this series on, instead of counting the stacks, we count the
    outstanding nr_base_pages each stack has, which gives us a much better
    memory overview.  The other fixup is for the migration part.
    
    A more detailed explanation can be found in the changelog of the
    respective patches.
    
    
    This patch (of 4):
    
    __set_page_owner_handle() and __reset_page_owner() update the metadata of
    all pages when the page is of a higher-order, but we miss to do the same
    when the pages are migrated.  __folio_copy_owner() only updates the
    metadata of the head page, meaning that the information stored in the
    first page and the tail pages will not match.
    
    Strictly speaking that is not a big problem because 1) we do not print
    tail pages and 2) upon splitting all tail pages will inherit the metadata
    of the head page, but it is better to have all metadata in check should
    there be any problem, so it can ease debugging.
    
    For that purpose, a couple of helpers are created
    __update_page_owner_handle() which updates the metadata on allocation, and
    __update_page_owner_free_handle() which does the same when the page is
    freed.
    
    __folio_copy_owner() will make use of both as it needs to entirely replace
    the page_owner metadata for the new page.
    
    Link: https://lkml.kernel.org/r/20240404070702.2744-1-osalvador@suse.de
    Link: https://lkml.kernel.org/r/20240404070702.2744-2-osalvador@suse.deSigned-off-by: default avatarOscar Salvador <osalvador@suse.de>
    Reviewed-by: default avatarVlastimil Babka <vbabka@suse.cz>
    Tested-by: default avatarKefeng Wang <wangkefeng.wang@huawei.com>
    Cc: Alexander Potapenko <glider@google.com>
    Cc: Alexandre Ghiti <alexghiti@rivosinc.com>
    Cc: Andrey Konovalov <andreyknvl@gmail.com>
    Cc: Marco Elver <elver@google.com>
    Cc: Michal Hocko <mhocko@suse.com>
    Cc: Oscar Salvador <osalvador@suse.de>
    Cc: Palmer Dabbelt <palmer@dabbelt.com>
    Cc: Alexandre Ghiti <alexghiti@rivosinc.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    ea4b5b33
page_owner.c 23.8 KB