summaryrefslogtreecommitdiffstats
path: root/mm/page_alloc.c
diff options
context:
space:
mode:
authorMatthew Wilcox (Oracle) <willy@infradead.org>2023-08-16 17:11:54 +0200
committerAndrew Morton <akpm@linux-foundation.org>2023-08-21 23:28:44 +0200
commit0f2f43fabb95192c73b19586ef7536d7ac7c2f8c (patch)
tree30c355bdd8e3e12a031c2d7090f8484cb9ec5599 /mm/page_alloc.c
parentmm: convert prep_transhuge_page() to folio_prep_large_rmappable() (diff)
downloadlinux-0f2f43fabb95192c73b19586ef7536d7ac7c2f8c.tar.xz
linux-0f2f43fabb95192c73b19586ef7536d7ac7c2f8c.zip
mm: remove free_compound_page() and the compound_page_dtors array
The only remaining destructor is free_compound_page(). Inline it into destroy_large_folio() and remove the array it used to live in. Link: https://lkml.kernel.org/r/20230816151201.3655946-7-willy@infradead.org Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: David Hildenbrand <david@redhat.com> Cc: Jens Axboe <axboe@kernel.dk> Cc: Sidhartha Kumar <sidhartha.kumar@oracle.com> Cc: Yanteng Si <siyanteng@loongson.cn> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Diffstat (limited to 'mm/page_alloc.c')
-rw-r--r--mm/page_alloc.c24
1 files changed, 5 insertions, 19 deletions
diff --git a/mm/page_alloc.c b/mm/page_alloc.c
index a97d6fa9cea0..31fec31be31e 100644
--- a/mm/page_alloc.c
+++ b/mm/page_alloc.c
@@ -284,11 +284,6 @@ const char * const migratetype_names[MIGRATE_TYPES] = {
#endif
};
-static compound_page_dtor * const compound_page_dtors[NR_COMPOUND_DTORS] = {
- [NULL_COMPOUND_DTOR] = NULL,
- [COMPOUND_PAGE_DTOR] = free_compound_page,
-};
-
int min_free_kbytes = 1024;
int user_min_free_kbytes = -1;
static int watermark_boost_factor __read_mostly = 15000;
@@ -577,19 +572,13 @@ static inline void free_the_page(struct page *page, unsigned int order)
* The remaining PAGE_SIZE pages are called "tail pages". PageTail() is encoded
* in bit 0 of page->compound_head. The rest of bits is pointer to head page.
*
- * The first tail page's ->compound_dtor holds the offset in array of compound
- * page destructors. See compound_page_dtors.
+ * The first tail page's ->compound_dtor describes how to destroy the
+ * compound page.
*
* The first tail page's ->compound_order holds the order of allocation.
* This usage means that zero-order pages may not be compound.
*/
-void free_compound_page(struct page *page)
-{
- mem_cgroup_uncharge(page_folio(page));
- free_the_page(page, compound_order(page));
-}
-
void prep_compound_page(struct page *page, unsigned int order)
{
int i;
@@ -611,14 +600,11 @@ void destroy_large_folio(struct folio *folio)
return;
}
- if (folio_test_transhuge(folio) && dtor == TRANSHUGE_PAGE_DTOR) {
+ if (folio_test_transhuge(folio) && dtor == TRANSHUGE_PAGE_DTOR)
folio_undo_large_rmappable(folio);
- free_compound_page(&folio->page);
- return;
- }
- VM_BUG_ON_FOLIO(dtor >= NR_COMPOUND_DTORS, folio);
- compound_page_dtors[dtor](&folio->page);
+ mem_cgroup_uncharge(folio);
+ free_the_page(&folio->page, folio_order(folio));
}
static inline void set_buddy_order(struct page *page, unsigned int order)