Lines Matching refs:folio

381 		struct folio *newfolio, struct folio *folio, int extra_count)  in folio_migrate_mapping()  argument
383 XA_STATE(xas, &mapping->i_pages, folio_index(folio)); in folio_migrate_mapping()
386 int expected_count = expected_page_refs(mapping, &folio->page) + extra_count; in folio_migrate_mapping()
387 long nr = folio_nr_pages(folio); in folio_migrate_mapping()
391 if (folio_ref_count(folio) != expected_count) in folio_migrate_mapping()
395 newfolio->index = folio->index; in folio_migrate_mapping()
396 newfolio->mapping = folio->mapping; in folio_migrate_mapping()
397 if (folio_test_swapbacked(folio)) in folio_migrate_mapping()
403 oldzone = folio_zone(folio); in folio_migrate_mapping()
407 if (!folio_ref_freeze(folio, expected_count)) { in folio_migrate_mapping()
416 newfolio->index = folio->index; in folio_migrate_mapping()
417 newfolio->mapping = folio->mapping; in folio_migrate_mapping()
419 if (folio_test_swapbacked(folio)) { in folio_migrate_mapping()
421 if (folio_test_swapcache(folio)) { in folio_migrate_mapping()
423 newfolio->private = folio_get_private(folio); in folio_migrate_mapping()
426 VM_BUG_ON_FOLIO(folio_test_swapcache(folio), folio); in folio_migrate_mapping()
430 dirty = folio_test_dirty(folio); in folio_migrate_mapping()
432 folio_clear_dirty(folio); in folio_migrate_mapping()
451 folio_ref_unfreeze(folio, expected_count - nr); in folio_migrate_mapping()
470 memcg = folio_memcg(folio); in folio_migrate_mapping()
476 if (folio_test_swapbacked(folio) && !folio_test_swapcache(folio)) { in folio_migrate_mapping()
481 if (folio_test_swapcache(folio)) { in folio_migrate_mapping()
538 void folio_migrate_flags(struct folio *newfolio, struct folio *folio) in folio_migrate_flags() argument
542 if (folio_test_error(folio)) in folio_migrate_flags()
544 if (folio_test_referenced(folio)) in folio_migrate_flags()
546 if (folio_test_uptodate(folio)) in folio_migrate_flags()
548 if (folio_test_clear_active(folio)) { in folio_migrate_flags()
549 VM_BUG_ON_FOLIO(folio_test_unevictable(folio), folio); in folio_migrate_flags()
551 } else if (folio_test_clear_unevictable(folio)) in folio_migrate_flags()
553 if (folio_test_workingset(folio)) in folio_migrate_flags()
555 if (folio_test_checked(folio)) in folio_migrate_flags()
557 if (folio_test_mappedtodisk(folio)) in folio_migrate_flags()
561 if (folio_test_dirty(folio)) in folio_migrate_flags()
564 if (folio_test_young(folio)) in folio_migrate_flags()
566 if (folio_test_idle(folio)) in folio_migrate_flags()
573 cpupid = page_cpupid_xchg_last(&folio->page, -1); in folio_migrate_flags()
576 folio_migrate_ksm(newfolio, folio); in folio_migrate_flags()
581 if (folio_test_swapcache(folio)) in folio_migrate_flags()
582 folio_clear_swapcache(folio); in folio_migrate_flags()
583 folio_clear_private(folio); in folio_migrate_flags()
586 if (!folio_test_hugetlb(folio)) in folio_migrate_flags()
587 folio->private = NULL; in folio_migrate_flags()
601 if (folio_test_readahead(folio)) in folio_migrate_flags()
604 folio_copy_owner(newfolio, folio); in folio_migrate_flags()
606 if (!folio_test_hugetlb(folio)) in folio_migrate_flags()
607 mem_cgroup_migrate(folio, newfolio); in folio_migrate_flags()
611 void folio_migrate_copy(struct folio *newfolio, struct folio *folio) in folio_migrate_copy() argument
613 folio_copy(newfolio, folio); in folio_migrate_copy()
614 folio_migrate_flags(newfolio, folio); in folio_migrate_copy()
632 struct folio *newfolio = page_folio(newpage); in migrate_page()
633 struct folio *folio = page_folio(page); in migrate_page() local
636 BUG_ON(folio_test_writeback(folio)); /* Writeback must be complete */ in migrate_page()
638 rc = folio_migrate_mapping(mapping, newfolio, folio, 0); in migrate_page()
644 folio_migrate_copy(newfolio, folio); in migrate_page()
646 folio_migrate_flags(newfolio, folio); in migrate_page()