Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

mm: convert lru_add_page_tail() to lru_add_split_folio()

Remove three hidden calls to compound_head() and accesses to page->lru.

Link: https://lkml.kernel.org/r/20250313151458.4145978-1-willy@infradead.org
Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org>
Reviewed-by: Zi Yan <ziy@nvidia.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Matthew Wilcox (Oracle) and committed by
Andrew Morton
8defffa4 f841ad9c

+9 -9
+9 -9
mm/huge_memory.c
··· 3262 3262 } 3263 3263 } 3264 3264 3265 - static void lru_add_page_tail(struct folio *folio, struct page *tail, 3265 + static void lru_add_split_folio(struct folio *folio, struct folio *new_folio, 3266 3266 struct lruvec *lruvec, struct list_head *list) 3267 3267 { 3268 - VM_BUG_ON_FOLIO(PageLRU(tail), folio); 3268 + VM_BUG_ON_FOLIO(folio_test_lru(new_folio), folio); 3269 3269 lockdep_assert_held(&lruvec->lru_lock); 3270 3270 3271 3271 if (list) { 3272 3272 /* page reclaim is reclaiming a huge page */ 3273 3273 VM_WARN_ON(folio_test_lru(folio)); 3274 - get_page(tail); 3275 - list_add_tail(&tail->lru, list); 3274 + folio_get(new_folio); 3275 + list_add_tail(&new_folio->lru, list); 3276 3276 } else { 3277 3277 /* head is still on lru (and we have it frozen) */ 3278 3278 VM_WARN_ON(!folio_test_lru(folio)); 3279 3279 if (folio_test_unevictable(folio)) 3280 - tail->mlock_count = 0; 3280 + new_folio->mlock_count = 0; 3281 3281 else 3282 - list_add_tail(&tail->lru, &folio->lru); 3283 - SetPageLRU(tail); 3282 + list_add_tail(&new_folio->lru, &folio->lru); 3283 + folio_set_lru(new_folio); 3284 3284 } 3285 3285 } 3286 3286 ··· 3581 3581 ((mapping || swap_cache) ? 3582 3582 folio_nr_pages(release) : 0)); 3583 3583 3584 - lru_add_page_tail(origin_folio, &release->page, 3585 - lruvec, list); 3584 + lru_add_split_folio(origin_folio, release, lruvec, 3585 + list); 3586 3586 3587 3587 /* Some pages can be beyond EOF: drop them from cache */ 3588 3588 if (release->index >= end) {