mm/hugetlb: mm/memory_hotplug: use a folio in scan_movable_pages()
By using a folio in scan_movable_pages() we convert the last user of the page-based hugetlb information macro functions to the folio version. After this conversion, we can safely remove the page-based definitions from include/linux/hugetlb.h. Link: https://lkml.kernel.org/r/20240530171427.242018-1-sidhartha.kumar@oracle.com Signed-off-by: Sidhartha Kumar <sidhartha.kumar@oracle.com> Acked-by: David Hildenbrand <david@redhat.com> Cc: Matthew Wilcox (Oracle) <willy@infradead.org> Cc: Muchun Song <muchun.song@linux.dev> Cc: Oscar Salvador <osalvador@suse.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
508758960b
commit
16540dae95
@ -616,9 +616,7 @@ static __always_inline \
|
||||
bool folio_test_hugetlb_##flname(struct folio *folio) \
|
||||
{ void *private = &folio->private; \
|
||||
return test_bit(HPG_##flname, private); \
|
||||
} \
|
||||
static inline int HPage##uname(struct page *page) \
|
||||
{ return test_bit(HPG_##flname, &(page->private)); }
|
||||
}
|
||||
|
||||
#define SETHPAGEFLAG(uname, flname) \
|
||||
static __always_inline \
|
||||
@ -637,8 +635,6 @@ void folio_clear_hugetlb_##flname(struct folio *folio) \
|
||||
#define TESTHPAGEFLAG(uname, flname) \
|
||||
static inline bool \
|
||||
folio_test_hugetlb_##flname(struct folio *folio) \
|
||||
{ return 0; } \
|
||||
static inline int HPage##uname(struct page *page) \
|
||||
{ return 0; }
|
||||
|
||||
#define SETHPAGEFLAG(uname, flname) \
|
||||
|
@ -1731,8 +1731,8 @@ static int scan_movable_pages(unsigned long start, unsigned long end,
|
||||
unsigned long pfn;
|
||||
|
||||
for (pfn = start; pfn < end; pfn++) {
|
||||
struct page *page, *head;
|
||||
unsigned long skip;
|
||||
struct page *page;
|
||||
struct folio *folio;
|
||||
|
||||
if (!pfn_valid(pfn))
|
||||
continue;
|
||||
@ -1753,7 +1753,7 @@ static int scan_movable_pages(unsigned long start, unsigned long end,
|
||||
|
||||
if (!PageHuge(page))
|
||||
continue;
|
||||
head = compound_head(page);
|
||||
folio = page_folio(page);
|
||||
/*
|
||||
* This test is racy as we hold no reference or lock. The
|
||||
* hugetlb page could have been free'ed and head is no longer
|
||||
@ -1761,10 +1761,9 @@ static int scan_movable_pages(unsigned long start, unsigned long end,
|
||||
* cases false positives and negatives are possible. Calling
|
||||
* code must deal with these scenarios.
|
||||
*/
|
||||
if (HPageMigratable(head))
|
||||
if (folio_test_hugetlb_migratable(folio))
|
||||
goto found;
|
||||
skip = compound_nr(head) - (pfn - page_to_pfn(head));
|
||||
pfn += skip - 1;
|
||||
pfn |= folio_nr_pages(folio) - 1;
|
||||
}
|
||||
return -ENOENT;
|
||||
found:
|
||||
|
Loading…
x
Reference in New Issue
Block a user