lkml.org 
[lkml]   [2023]   [Nov]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 03/10] mm: huge_memory: use a folio in __split_huge_pmd_locked()
    Date
    Use a folio in __split_huge_pmd_locked() which replaces five
    compound_head() call with two page_folio() calls.

    Signed-off-by: Kefeng Wang <wangkefeng.wang@huawei.com>
    ---
    mm/huge_memory.c | 19 ++++++++++---------
    1 file changed, 10 insertions(+), 9 deletions(-)

    diff --git a/mm/huge_memory.c b/mm/huge_memory.c
    index f31f02472396..34dd01970927 100644
    --- a/mm/huge_memory.c
    +++ b/mm/huge_memory.c
    @@ -2117,6 +2117,7 @@ static void __split_huge_pmd_locked(struct vm_area_struct *vma, pmd_t *pmd,
    count_vm_event(THP_SPLIT_PMD);

    if (!vma_is_anonymous(vma)) {
    + struct folio *folio;
    old_pmd = pmdp_huge_clear_flush(vma, haddr, pmd);
    /*
    * We are going to unmap this huge page. So
    @@ -2130,17 +2131,17 @@ static void __split_huge_pmd_locked(struct vm_area_struct *vma, pmd_t *pmd,
    swp_entry_t entry;

    entry = pmd_to_swp_entry(old_pmd);
    - page = pfn_swap_entry_to_page(entry);
    + folio = pfn_swap_entry_to_folio(entry);
    } else {
    - page = pmd_page(old_pmd);
    - if (!PageDirty(page) && pmd_dirty(old_pmd))
    - set_page_dirty(page);
    - if (!PageReferenced(page) && pmd_young(old_pmd))
    - SetPageReferenced(page);
    - page_remove_rmap(page, vma, true);
    - put_page(page);
    + folio = page_folio(pmd_page(old_pmd));
    + if (!folio_test_dirty(folio) && pmd_dirty(old_pmd))
    + folio_set_dirty(folio);
    + if (!folio_test_referenced(folio) && pmd_young(old_pmd))
    + folio_set_referenced(folio);
    + page_remove_rmap(&folio->page, vma, true);
    + folio_put(folio);
    }
    - add_mm_counter(mm, mm_counter_file(page), -HPAGE_PMD_NR);
    + add_mm_counter(mm, mm_counter_file(&folio->page), -HPAGE_PMD_NR);
    return;
    }

    --
    2.27.0
    \
     
     \ /
      Last update: 2023-11-20 13:50    [W:2.634 / U:0.028 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site