Commit b54d60b1 authored by Matthew Wilcox (Oracle)'s avatar Matthew Wilcox (Oracle) Committed by Andrew Morton

mm/khugepaged: use a folio more in collapse_file()

This function is not yet fully converted to the folio API, but this
removes a few uses of old APIs.

Link: https://lkml.kernel.org/r/20231228085748.1083901-6-willy@infradead.orgSigned-off-by: default avatarMatthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: default avatarZi Yan <ziy@nvidia.com>
Reviewed-by: default avatarVlastimil Babka <vbabka@suse.cz>
Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
parent 82feeaa0
...@@ -2122,23 +2122,23 @@ static int collapse_file(struct mm_struct *mm, unsigned long addr, ...@@ -2122,23 +2122,23 @@ static int collapse_file(struct mm_struct *mm, unsigned long addr,
xas_lock_irq(&xas); xas_lock_irq(&xas);
} }
nr = thp_nr_pages(hpage); folio = page_folio(hpage);
nr = folio_nr_pages(folio);
if (is_shmem) if (is_shmem)
__mod_lruvec_page_state(hpage, NR_SHMEM_THPS, nr); __lruvec_stat_mod_folio(folio, NR_SHMEM_THPS, nr);
else else
__mod_lruvec_page_state(hpage, NR_FILE_THPS, nr); __lruvec_stat_mod_folio(folio, NR_FILE_THPS, nr);
if (nr_none) { if (nr_none) {
__mod_lruvec_page_state(hpage, NR_FILE_PAGES, nr_none); __lruvec_stat_mod_folio(folio, NR_FILE_PAGES, nr_none);
/* nr_none is always 0 for non-shmem. */ /* nr_none is always 0 for non-shmem. */
__mod_lruvec_page_state(hpage, NR_SHMEM, nr_none); __lruvec_stat_mod_folio(folio, NR_SHMEM, nr_none);
} }
/* /*
* Mark hpage as uptodate before inserting it into the page cache so * Mark hpage as uptodate before inserting it into the page cache so
* that it isn't mistaken for an fallocated but unwritten page. * that it isn't mistaken for an fallocated but unwritten page.
*/ */
folio = page_folio(hpage);
folio_mark_uptodate(folio); folio_mark_uptodate(folio);
folio_ref_add(folio, HPAGE_PMD_NR - 1); folio_ref_add(folio, HPAGE_PMD_NR - 1);
...@@ -2148,7 +2148,7 @@ static int collapse_file(struct mm_struct *mm, unsigned long addr, ...@@ -2148,7 +2148,7 @@ static int collapse_file(struct mm_struct *mm, unsigned long addr,
/* Join all the small entries into a single multi-index entry. */ /* Join all the small entries into a single multi-index entry. */
xas_set_order(&xas, start, HPAGE_PMD_ORDER); xas_set_order(&xas, start, HPAGE_PMD_ORDER);
xas_store(&xas, hpage); xas_store(&xas, folio);
WARN_ON_ONCE(xas_error(&xas)); WARN_ON_ONCE(xas_error(&xas));
xas_unlock_irq(&xas); xas_unlock_irq(&xas);
...@@ -2159,7 +2159,7 @@ static int collapse_file(struct mm_struct *mm, unsigned long addr, ...@@ -2159,7 +2159,7 @@ static int collapse_file(struct mm_struct *mm, unsigned long addr,
retract_page_tables(mapping, start); retract_page_tables(mapping, start);
if (cc && !cc->is_khugepaged) if (cc && !cc->is_khugepaged)
result = SCAN_PTE_MAPPED_HUGEPAGE; result = SCAN_PTE_MAPPED_HUGEPAGE;
unlock_page(hpage); folio_unlock(folio);
/* /*
* The collapse has succeeded, so free the old pages. * The collapse has succeeded, so free the old pages.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment