lkml.org 
[lkml]   [2021]   [Dec]   [17]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v1 03/11] mm: simplify hugetlb and file-THP handling in __page_mapcount()
    Date
    Let's return early for hugetlb, which really only relies on the compound
    mapcount so far and does not support PageDoubleMap() yet. Use the chance
    to cleanup the file-THP case to make it easier to grasp. While at it, use
    head_compound_mapcount().

    This is a preparation for further changes.

    Reviewed-by: Peter Xu <peterx@redhat.com>
    Signed-off-by: David Hildenbrand <david@redhat.com>
    ---
    mm/util.c | 11 +++++++----
    1 file changed, 7 insertions(+), 4 deletions(-)

    diff --git a/mm/util.c b/mm/util.c
    index 741ba32a43ac..3239e75c148d 100644
    --- a/mm/util.c
    +++ b/mm/util.c
    @@ -732,15 +732,18 @@ int __page_mapcount(struct page *page)
    {
    int ret;

    - ret = atomic_read(&page->_mapcount) + 1;
    + if (PageHuge(page))
    + return compound_mapcount(page);
    /*
    * For file THP page->_mapcount contains total number of mapping
    * of the page: no need to look into compound_mapcount.
    */
    - if (!PageAnon(page) && !PageHuge(page))
    - return ret;
    + if (!PageAnon(page))
    + return atomic_read(&page->_mapcount) + 1;
    +
    + ret = atomic_read(&page->_mapcount) + 1;
    page = compound_head(page);
    - ret += atomic_read(compound_mapcount_ptr(page)) + 1;
    + ret += head_compound_mapcount(page);
    if (PageDoubleMap(page))
    ret--;
    return ret;
    --
    2.31.1
    \
     
     \ /
      Last update: 2021-12-17 12:34    [W:2.436 / U:0.108 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site