mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git
synced 2025-01-01 10:42:11 +00:00
mm: convert migrate_vma_collect_pmd to use a folio
Convert the pmd directly to a folio and use it. Turns four calls to compound_head() into one. Link: https://lkml.kernel.org/r/20240326202833.523759-5-willy@infradead.org Signed-off-by: Matthew Wilcox (Oracle) <willy@infradead.org> Reviewed-by: David Hildenbrand <david@redhat.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
parent
e06d03d559
commit
b002a7b0a5
@ -71,7 +71,7 @@ static int migrate_vma_collect_pmd(pmd_t *pmdp,
|
||||
return migrate_vma_collect_hole(start, end, -1, walk);
|
||||
|
||||
if (pmd_trans_huge(*pmdp)) {
|
||||
struct page *page;
|
||||
struct folio *folio;
|
||||
|
||||
ptl = pmd_lock(mm, pmdp);
|
||||
if (unlikely(!pmd_trans_huge(*pmdp))) {
|
||||
@ -79,21 +79,21 @@ static int migrate_vma_collect_pmd(pmd_t *pmdp,
|
||||
goto again;
|
||||
}
|
||||
|
||||
page = pmd_page(*pmdp);
|
||||
if (is_huge_zero_page(page)) {
|
||||
folio = pmd_folio(*pmdp);
|
||||
if (is_huge_zero_folio(folio)) {
|
||||
spin_unlock(ptl);
|
||||
split_huge_pmd(vma, pmdp, addr);
|
||||
} else {
|
||||
int ret;
|
||||
|
||||
get_page(page);
|
||||
folio_get(folio);
|
||||
spin_unlock(ptl);
|
||||
if (unlikely(!trylock_page(page)))
|
||||
if (unlikely(!folio_trylock(folio)))
|
||||
return migrate_vma_collect_skip(start, end,
|
||||
walk);
|
||||
ret = split_huge_page(page);
|
||||
unlock_page(page);
|
||||
put_page(page);
|
||||
ret = split_folio(folio);
|
||||
folio_unlock(folio);
|
||||
folio_put(folio);
|
||||
if (ret)
|
||||
return migrate_vma_collect_skip(start, end,
|
||||
walk);
|
||||
|
Loading…
Reference in New Issue
Block a user