]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
mm: convert migrate_vma_collect_pmd to use a folio
authorMatthew Wilcox (Oracle) <willy@infradead.org>
Tue, 26 Mar 2024 20:28:24 +0000 (20:28 +0000)
committerAndrew Morton <akpm@linux-foundation.org>
Fri, 26 Apr 2024 03:56:19 +0000 (20:56 -0700)
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>
mm/migrate_device.c

index b6c27c76e1a0b2768de8f4196144bd8e43197df6..d40b46ae9d65b7c012c53b3bc0cb21a6818d302b 100644 (file)
@@ -71,7 +71,7 @@ again:
                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 @@ again:
                        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);