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

mm: convert split_huge_pages_pid() to use a folio

Replaces five calls to compound_head with one.

Link: https://lkml.kernel.org/r/20230816151201.3655946-14-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>

authored by

Matthew Wilcox (Oracle) and committed by
Andrew Morton
a644b0ab b10ff04d

+10 -11
+10 -11
mm/huge_memory.c
··· 584 584 folio_set_large_rmappable(folio); 585 585 } 586 586 587 - static inline bool is_transparent_hugepage(struct page *page) 587 + static inline bool is_transparent_hugepage(struct folio *folio) 588 588 { 589 - struct folio *folio; 590 - 591 - if (!PageCompound(page)) 589 + if (!folio_test_large(folio)) 592 590 return false; 593 591 594 - folio = page_folio(page); 595 592 return is_huge_zero_page(&folio->page) || 596 593 folio_test_large_rmappable(folio); 597 594 } ··· 3009 3012 for (addr = vaddr_start; addr < vaddr_end; addr += PAGE_SIZE) { 3010 3013 struct vm_area_struct *vma = vma_lookup(mm, addr); 3011 3014 struct page *page; 3015 + struct folio *folio; 3012 3016 3013 3017 if (!vma) 3014 3018 break; ··· 3026 3028 if (IS_ERR_OR_NULL(page)) 3027 3029 continue; 3028 3030 3029 - if (!is_transparent_hugepage(page)) 3031 + folio = page_folio(page); 3032 + if (!is_transparent_hugepage(folio)) 3030 3033 goto next; 3031 3034 3032 3035 total++; 3033 - if (!can_split_folio(page_folio(page), NULL)) 3036 + if (!can_split_folio(folio, NULL)) 3034 3037 goto next; 3035 3038 3036 - if (!trylock_page(page)) 3039 + if (!folio_trylock(folio)) 3037 3040 goto next; 3038 3041 3039 - if (!split_huge_page(page)) 3042 + if (!split_folio(folio)) 3040 3043 split++; 3041 3044 3042 - unlock_page(page); 3045 + folio_unlock(folio); 3043 3046 next: 3044 - put_page(page); 3047 + folio_put(folio); 3045 3048 cond_resched(); 3046 3049 } 3047 3050 mmap_read_unlock(mm);