Skip to content

Commit 23e4883

Browse files
Hugh Dickinsakpm00
authored andcommitted
mm: add page_rmappable_folio() wrapper
folio_prep_large_rmappable() is being used repeatedly along with a conversion from page to folio, a check non-NULL, a check order > 1: wrap it all up into struct folio *page_rmappable_folio(struct page *). Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Hugh Dickins <[email protected]> Cc: Andi Kleen <[email protected]> Cc: Christoph Lameter <[email protected]> Cc: David Hildenbrand <[email protected]> Cc: Greg Kroah-Hartman <[email protected]> Cc: "Huang, Ying" <[email protected]> Cc: Kefeng Wang <[email protected]> Cc: Matthew Wilcox (Oracle) <[email protected]> Cc: Mel Gorman <[email protected]> Cc: Michal Hocko <[email protected]> Cc: Mike Kravetz <[email protected]> Cc: Nhat Pham <[email protected]> Cc: Sidhartha Kumar <[email protected]> Cc: Suren Baghdasaryan <[email protected]> Cc: Tejun heo <[email protected]> Cc: Vishal Moola (Oracle) <[email protected]> Cc: Yang Shi <[email protected]> Cc: Yosry Ahmed <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
1 parent 2cafb58 commit 23e4883

File tree

3 files changed

+14
-20
lines changed

3 files changed

+14
-20
lines changed

mm/internal.h

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -415,6 +415,15 @@ static inline void folio_set_order(struct folio *folio, unsigned int order)
415415

416416
void folio_undo_large_rmappable(struct folio *folio);
417417

418+
static inline struct folio *page_rmappable_folio(struct page *page)
419+
{
420+
struct folio *folio = (struct folio *)page;
421+
422+
if (folio && folio_order(folio) > 1)
423+
folio_prep_large_rmappable(folio);
424+
return folio;
425+
}
426+
418427
static inline void prep_compound_head(struct page *page, unsigned int order)
419428
{
420429
struct folio *folio = (struct folio *)page;

mm/mempolicy.c

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2122,10 +2122,7 @@ struct folio *vma_alloc_folio(gfp_t gfp, int order, struct vm_area_struct *vma,
21222122
mpol_cond_put(pol);
21232123
gfp |= __GFP_COMP;
21242124
page = alloc_page_interleave(gfp, order, nid);
2125-
folio = (struct folio *)page;
2126-
if (folio && order > 1)
2127-
folio_prep_large_rmappable(folio);
2128-
goto out;
2125+
return page_rmappable_folio(page);
21292126
}
21302127

21312128
if (pol->mode == MPOL_PREFERRED_MANY) {
@@ -2135,10 +2132,7 @@ struct folio *vma_alloc_folio(gfp_t gfp, int order, struct vm_area_struct *vma,
21352132
gfp |= __GFP_COMP;
21362133
page = alloc_pages_preferred_many(gfp, order, node, pol);
21372134
mpol_cond_put(pol);
2138-
folio = (struct folio *)page;
2139-
if (folio && order > 1)
2140-
folio_prep_large_rmappable(folio);
2141-
goto out;
2135+
return page_rmappable_folio(page);
21422136
}
21432137

21442138
if (unlikely(IS_ENABLED(CONFIG_TRANSPARENT_HUGEPAGE) && hugepage)) {
@@ -2232,12 +2226,7 @@ EXPORT_SYMBOL(alloc_pages);
22322226

22332227
struct folio *folio_alloc(gfp_t gfp, unsigned order)
22342228
{
2235-
struct page *page = alloc_pages(gfp | __GFP_COMP, order);
2236-
struct folio *folio = (struct folio *)page;
2237-
2238-
if (folio && order > 1)
2239-
folio_prep_large_rmappable(folio);
2240-
return folio;
2229+
return page_rmappable_folio(alloc_pages(gfp | __GFP_COMP, order));
22412230
}
22422231
EXPORT_SYMBOL(folio_alloc);
22432232

mm/page_alloc.c

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4598,12 +4598,8 @@ struct folio *__folio_alloc(gfp_t gfp, unsigned int order, int preferred_nid,
45984598
nodemask_t *nodemask)
45994599
{
46004600
struct page *page = __alloc_pages(gfp | __GFP_COMP, order,
4601-
preferred_nid, nodemask);
4602-
struct folio *folio = (struct folio *)page;
4603-
4604-
if (folio && order > 1)
4605-
folio_prep_large_rmappable(folio);
4606-
return folio;
4601+
preferred_nid, nodemask);
4602+
return page_rmappable_folio(page);
46074603
}
46084604
EXPORT_SYMBOL(__folio_alloc);
46094605

0 commit comments

Comments
 (0)