u64 frame_vbo;
        pgoff_t index;
        bool frame_uptodate;
+       struct folio *folio;
 
        if (frame_size < PAGE_SIZE) {
                /*
                        if (err) {
                                for (ip = 0; ip < pages_per_frame; ip++) {
                                        page = pages[ip];
-                                       unlock_page(page);
-                                       put_page(page);
+                                       folio = page_folio(page);
+                                       folio_unlock(folio);
+                                       folio_put(folio);
                                }
                                goto out;
                        }
                off = offset_in_page(valid);
                for (; ip < pages_per_frame; ip++, off = 0) {
                        page = pages[ip];
+                       folio = page_folio(page);
                        zero_user_segment(page, off, PAGE_SIZE);
                        flush_dcache_page(page);
-                       SetPageUptodate(page);
+                       folio_mark_uptodate(folio);
                }
 
                ni_lock(ni);
 
                for (ip = 0; ip < pages_per_frame; ip++) {
                        page = pages[ip];
-                       SetPageUptodate(page);
-                       unlock_page(page);
-                       put_page(page);
+                       folio = page_folio(page);
+                       folio_mark_uptodate(folio);
+                       folio_unlock(folio);
+                       folio_put(folio);
                }
 
                if (err)
                                        for (ip = 0; ip < pages_per_frame;
                                             ip++) {
                                                page = pages[ip];
-                                               unlock_page(page);
-                                               put_page(page);
+                                               folio = page_folio(page);
+                                               folio_unlock(folio);
+                                               folio_put(folio);
                                        }
                                        goto out;
                                }
                for (ip = 0; ip < pages_per_frame; ip++) {
                        page = pages[ip];
                        ClearPageDirty(page);
-                       SetPageUptodate(page);
-                       unlock_page(page);
-                       put_page(page);
+                       folio = page_folio(page);
+                       folio_mark_uptodate(folio);
+                       folio_unlock(folio);
+                       folio_put(folio);
                }
 
                if (err)