swap.c (b3bbcc5d1da1b654091dad15980b3d58fdae0fc6) swap.c (ec1c86b25f4bdd9dce6436c0539d2a6ae676e1c4)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * linux/mm/swap.c
4 *
5 * Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds
6 */
7
8/*

--- 470 unchanged lines hidden (view full) ---

479void folio_add_lru(struct folio *folio)
480{
481 struct folio_batch *fbatch;
482
483 VM_BUG_ON_FOLIO(folio_test_active(folio) &&
484 folio_test_unevictable(folio), folio);
485 VM_BUG_ON_FOLIO(folio_test_lru(folio), folio);
486
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * linux/mm/swap.c
4 *
5 * Copyright (C) 1991, 1992, 1993, 1994 Linus Torvalds
6 */
7
8/*

--- 470 unchanged lines hidden (view full) ---

479void folio_add_lru(struct folio *folio)
480{
481 struct folio_batch *fbatch;
482
483 VM_BUG_ON_FOLIO(folio_test_active(folio) &&
484 folio_test_unevictable(folio), folio);
485 VM_BUG_ON_FOLIO(folio_test_lru(folio), folio);
486
487 /* see the comment in lru_gen_add_folio() */
488 if (lru_gen_enabled() && !folio_test_unevictable(folio) &&
489 lru_gen_in_fault() && !(current->flags & PF_MEMALLOC))
490 folio_set_active(folio);
491
487 folio_get(folio);
488 local_lock(&cpu_fbatches.lock);
489 fbatch = this_cpu_ptr(&cpu_fbatches.lru_add);
490 folio_batch_add_and_move(fbatch, folio, lru_add_fn);
491 local_unlock(&cpu_fbatches.lock);
492}
493EXPORT_SYMBOL(folio_add_lru);
494

--- 75 unchanged lines hidden (view full) ---

570 __count_vm_events(PGDEACTIVATE, nr_pages);
571 __count_memcg_events(lruvec_memcg(lruvec), PGDEACTIVATE,
572 nr_pages);
573 }
574}
575
576static void lru_deactivate_fn(struct lruvec *lruvec, struct folio *folio)
577{
492 folio_get(folio);
493 local_lock(&cpu_fbatches.lock);
494 fbatch = this_cpu_ptr(&cpu_fbatches.lru_add);
495 folio_batch_add_and_move(fbatch, folio, lru_add_fn);
496 local_unlock(&cpu_fbatches.lock);
497}
498EXPORT_SYMBOL(folio_add_lru);
499

--- 75 unchanged lines hidden (view full) ---

575 __count_vm_events(PGDEACTIVATE, nr_pages);
576 __count_memcg_events(lruvec_memcg(lruvec), PGDEACTIVATE,
577 nr_pages);
578 }
579}
580
581static void lru_deactivate_fn(struct lruvec *lruvec, struct folio *folio)
582{
578 if (folio_test_active(folio) && !folio_test_unevictable(folio)) {
583 if (!folio_test_unevictable(folio) && (folio_test_active(folio) || lru_gen_enabled())) {
579 long nr_pages = folio_nr_pages(folio);
580
581 lruvec_del_folio(lruvec, folio);
582 folio_clear_active(folio);
583 folio_clear_referenced(folio);
584 lruvec_add_folio(lruvec, folio);
585
586 __count_vm_events(PGDEACTIVATE, nr_pages);

--- 96 unchanged lines hidden (view full) ---

683 * deactivate_page() moves @page to the inactive list if @page was on the active
684 * list and was not an unevictable page. This is done to accelerate the reclaim
685 * of @page.
686 */
687void deactivate_page(struct page *page)
688{
689 struct folio *folio = page_folio(page);
690
584 long nr_pages = folio_nr_pages(folio);
585
586 lruvec_del_folio(lruvec, folio);
587 folio_clear_active(folio);
588 folio_clear_referenced(folio);
589 lruvec_add_folio(lruvec, folio);
590
591 __count_vm_events(PGDEACTIVATE, nr_pages);

--- 96 unchanged lines hidden (view full) ---

688 * deactivate_page() moves @page to the inactive list if @page was on the active
689 * list and was not an unevictable page. This is done to accelerate the reclaim
690 * of @page.
691 */
692void deactivate_page(struct page *page)
693{
694 struct folio *folio = page_folio(page);
695
691 if (folio_test_lru(folio) && folio_test_active(folio) &&
692 !folio_test_unevictable(folio)) {
696 if (folio_test_lru(folio) && !folio_test_unevictable(folio) &&
697 (folio_test_active(folio) || lru_gen_enabled())) {
693 struct folio_batch *fbatch;
694
695 folio_get(folio);
696 local_lock(&cpu_fbatches.lock);
697 fbatch = this_cpu_ptr(&cpu_fbatches.lru_deactivate);
698 folio_batch_add_and_move(fbatch, folio, lru_deactivate_fn);
699 local_unlock(&cpu_fbatches.lock);
700 }

--- 384 unchanged lines hidden ---
698 struct folio_batch *fbatch;
699
700 folio_get(folio);
701 local_lock(&cpu_fbatches.lock);
702 fbatch = this_cpu_ptr(&cpu_fbatches.lru_deactivate);
703 folio_batch_add_and_move(fbatch, folio, lru_deactivate_fn);
704 local_unlock(&cpu_fbatches.lock);
705 }

--- 384 unchanged lines hidden ---