Messages in this thread | | | Date | Mon, 10 Jan 2022 23:52:02 -0800 | Subject | Re: [PATCH v2 28/28] gup: Convert check_and_migrate_movable_pages() to use a folio | From | John Hubbard <> |
| |
On 1/9/22 20:24, Matthew Wilcox (Oracle) wrote: > Switch from head pages to folios. This removes an assumption that > THPs are the only way to have a high-order page. > > Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> > --- > mm/gup.c | 28 ++++++++++++++-------------- > 1 file changed, 14 insertions(+), 14 deletions(-)
Reviewed-by: John Hubbard <jhubbard@nvidia.com>
thanks, -- John Hubbard NVIDIA
> > diff --git a/mm/gup.c b/mm/gup.c > index 1cdd5f2887a8..b2d109626c44 100644 > --- a/mm/gup.c > +++ b/mm/gup.c > @@ -1801,41 +1801,41 @@ static long check_and_migrate_movable_pages(unsigned long nr_pages, > bool drain_allow = true; > LIST_HEAD(movable_page_list); > long ret = 0; > - struct page *prev_head = NULL; > - struct page *head; > + struct folio *folio, *prev_folio = NULL; > struct migration_target_control mtc = { > .nid = NUMA_NO_NODE, > .gfp_mask = GFP_USER | __GFP_NOWARN, > }; > > for (i = 0; i < nr_pages; i++) { > - head = compound_head(pages[i]); > - if (head == prev_head) > + folio = page_folio(pages[i]); > + if (folio == prev_folio) > continue; > - prev_head = head; > + prev_folio = folio; > /* > * If we get a movable page, since we are going to be pinning > * these entries, try to move them out if possible. > */ > - if (!is_pinnable_page(head)) { > - if (PageHuge(head)) { > - if (!isolate_huge_page(head, &movable_page_list)) > + if (!is_pinnable_page(&folio->page)) { > + if (folio_test_hugetlb(folio)) { > + if (!isolate_huge_page(&folio->page, > + &movable_page_list)) > isolation_error_count++; > } else { > - if (!PageLRU(head) && drain_allow) { > + if (!folio_test_lru(folio) && drain_allow) { > lru_add_drain_all(); > drain_allow = false; > } > > - if (isolate_lru_page(head)) { > + if (isolate_lru_folio(folio)) { > isolation_error_count++; > continue; > } > - list_add_tail(&head->lru, &movable_page_list); > - mod_node_page_state(page_pgdat(head), > + list_add_tail(&folio->lru, &movable_page_list); > + node_stat_mod_folio(folio, > NR_ISOLATED_ANON + > - page_is_file_lru(head), > - thp_nr_pages(head)); > + folio_is_file_lru(folio), > + folio_nr_pages(folio)); > } > } > }
| |