mapping = candidate->f_mapping;
 
        for (index = off_start; index < off_end; index += nr_pages) {
-               struct page *fpage = pagecache_get_page(mapping, index,
-                                               FGP_ENTRY | FGP_HEAD, 0);
+               struct folio *folio = __filemap_get_folio(mapping, index,
+                                               FGP_ENTRY, 0);
 
                nr_pages = 1;
-               if (xa_is_value(fpage) || !fpage)
+               if (xa_is_value(folio) || !folio)
                        continue;
 
-               if (!is_transparent_hugepage(fpage))
+               if (!folio_test_large(folio))
                        goto next;
 
                total++;
-               nr_pages = thp_nr_pages(fpage);
+               nr_pages = folio_nr_pages(folio);
 
-               if (!trylock_page(fpage))
+               if (!folio_trylock(folio))
                        goto next;
 
-               if (!split_huge_page(fpage))
+               if (!split_folio(folio))
                        split++;
 
-               unlock_page(fpage);
+               folio_unlock(folio);
 next:
-               put_page(fpage);
+               folio_put(folio);
                cond_resched();
        }