Lines Matching defs:folio

32 	struct folio *folio = bio_first_folio_all(bio);
43 folio_mark_dirty(folio);
47 folio_clear_reclaim(folio);
49 folio_end_writeback(folio);
60 struct folio *folio = bio_first_folio_all(bio);
67 folio_mark_uptodate(folio);
69 folio_unlock(folio);
181 struct folio *folio = page_folio(page);
184 if (folio_free_swap(folio)) {
185 folio_unlock(folio);
192 ret = arch_prepare_to_swap(&folio->page);
194 folio_mark_dirty(folio);
195 folio_unlock(folio);
198 if (zswap_store(folio)) {
199 folio_start_writeback(folio);
200 folio_unlock(folio);
201 folio_end_writeback(folio);
204 if (!mem_cgroup_zswap_writeback_enabled(folio_memcg(folio))) {
205 folio_mark_dirty(folio);
209 __swap_writepage(folio, wbc);
213 static inline void count_swpout_vm_event(struct folio *folio)
216 if (unlikely(folio_test_pmd_mappable(folio))) {
217 count_memcg_folio_events(folio, THP_SWPOUT, 1);
221 count_vm_events(PSWPOUT, folio_nr_pages(folio));
225 static void bio_associate_blkg_from_page(struct bio *bio, struct folio *folio)
230 memcg = folio_memcg(folio);
240 #define bio_associate_blkg_from_page(bio, folio) do { } while (0)
296 static void swap_writepage_fs(struct folio *folio, struct writeback_control *wbc)
299 struct swap_info_struct *sis = swp_swap_info(folio->swap);
301 loff_t pos = folio_file_pos(folio);
303 count_swpout_vm_event(folio);
304 folio_start_writeback(folio);
305 folio_unlock(folio);
323 bvec_set_folio(&sio->bvec[sio->pages], folio, folio_size(folio), 0);
324 sio->len += folio_size(folio);
334 static void swap_writepage_bdev_sync(struct folio *folio,
342 bio.bi_iter.bi_sector = swap_folio_sector(folio);
343 bio_add_folio_nofail(&bio, folio, folio_size(folio), 0);
345 bio_associate_blkg_from_page(&bio, folio);
346 count_swpout_vm_event(folio);
348 folio_start_writeback(folio);
349 folio_unlock(folio);
355 static void swap_writepage_bdev_async(struct folio *folio,
363 bio->bi_iter.bi_sector = swap_folio_sector(folio);
365 bio_add_folio_nofail(bio, folio, folio_size(folio), 0);
367 bio_associate_blkg_from_page(bio, folio);
368 count_swpout_vm_event(folio);
369 folio_start_writeback(folio);
370 folio_unlock(folio);
374 void __swap_writepage(struct folio *folio, struct writeback_control *wbc)
376 struct swap_info_struct *sis = swp_swap_info(folio->swap);
378 VM_BUG_ON_FOLIO(!folio_test_swapcache(folio), folio);
385 swap_writepage_fs(folio, wbc);
387 swap_writepage_bdev_sync(folio, wbc, sis);
389 swap_writepage_bdev_async(folio, wbc, sis);
411 struct folio *folio = page_folio(sio->bvec[p].bv_page);
413 folio_mark_uptodate(folio);
414 folio_unlock(folio);
419 struct folio *folio = page_folio(sio->bvec[p].bv_page);
421 folio_unlock(folio);
428 static void swap_read_folio_fs(struct folio *folio, struct swap_iocb **plug)
430 struct swap_info_struct *sis = swp_swap_info(folio->swap);
432 loff_t pos = folio_file_pos(folio);
451 bvec_set_folio(&sio->bvec[sio->pages], folio, folio_size(folio), 0);
452 sio->len += folio_size(folio);
462 static void swap_read_folio_bdev_sync(struct folio *folio,
469 bio.bi_iter.bi_sector = swap_folio_sector(folio);
470 bio_add_folio_nofail(&bio, folio, folio_size(folio), 0);
482 static void swap_read_folio_bdev_async(struct folio *folio,
488 bio->bi_iter.bi_sector = swap_folio_sector(folio);
490 bio_add_folio_nofail(bio, folio, folio_size(folio), 0);
495 void swap_read_folio(struct folio *folio, bool synchronous,
498 struct swap_info_struct *sis = swp_swap_info(folio->swap);
499 bool workingset = folio_test_workingset(folio);
503 VM_BUG_ON_FOLIO(!folio_test_swapcache(folio) && !synchronous, folio);
504 VM_BUG_ON_FOLIO(!folio_test_locked(folio), folio);
505 VM_BUG_ON_FOLIO(folio_test_uptodate(folio), folio);
518 if (zswap_load(folio)) {
519 folio_mark_uptodate(folio);
520 folio_unlock(folio);
522 swap_read_folio_fs(folio, plug);
524 swap_read_folio_bdev_sync(folio, sis);
526 swap_read_folio_bdev_async(folio, sis);