loff_t pos)
 {
        while (count) {
-               size_t n = min_t(size_t, count,
-                                PAGE_SIZE - offset_in_page(pos));
-               struct page *page;
+               struct folio *folio;
+               size_t n;
 
-               page = read_mapping_page(inode->i_mapping, pos >> PAGE_SHIFT,
+               folio = read_mapping_folio(inode->i_mapping, pos >> PAGE_SHIFT,
                                         NULL);
-               if (IS_ERR(page))
-                       return PTR_ERR(page);
-
-               memcpy_from_page(buf, page, offset_in_page(pos), n);
+               if (IS_ERR(folio))
+                       return PTR_ERR(folio);
 
-               put_page(page);
+               n = memcpy_from_file_folio(buf, folio, pos, count);
+               folio_put(folio);
 
                buf += n;
                pos += n;