Messages in this thread | | | Date | Fri, 4 Aug 2023 09:45:32 +0800 | From | Kefeng Wang <> | Subject | Re: [PATCH 1/4] mm: migrate: use a folio in add_page_for_migration() |
| |
On 2023/8/3 20:30, Matthew Wilcox wrote: > On Thu, Aug 03, 2023 at 03:13:21PM +0800, Kefeng Wang wrote: >> >> >> On 2023/8/2 20:21, Matthew Wilcox wrote: >>> On Wed, Aug 02, 2023 at 05:53:43PM +0800, Kefeng Wang wrote: >>>> err = -EACCES; >>>> - if (page_mapcount(page) > 1 && !migrate_all) >>>> - goto out_putpage; >>>> + if (folio_estimated_sharers(folio) > 1 && !migrate_all) >>>> + goto out_putfolio; >>> >>> I do not think this is the correct change. Maybe leave this line >>> alone. >> >> Ok, I am aware of the discussion about this in other mail, will not >> change it(also the next two patch about this function), or wait the >> new work of David. >>> >>>> - if (PageHuge(page)) { >>>> - if (PageHead(page)) { >>>> - isolated = isolate_hugetlb(page_folio(page), pagelist); >>>> + if (folio_test_hugetlb(folio)) { >>>> + if (folio_test_large(folio)) { >>> >>> This makes no sense when you read it. All hugetlb folios are large, >>> by definition. Think about what this code used to do, and what it >>> should be changed to. >> >> hugetlb folio is self large folio, will drop redundant check > > No, that's not the difference. Keep thinking about it. This is not > a mechanical translation!
if (PageHuge(page)) // page must be a hugetlb page if (PageHead(page)) // page must be a head page, not tail isolate_hugetlb() // isolate the hugetlb page if head
After using folio,
if (folio_test_hugetlb(folio)) // only check folio is hugetlb or not
I don't check the page is head or not, since the follow_page could return a sub-page, so the check PageHead need be retained, right?
| |