Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

memcg: remove __mod_lruvec_state

__mod_lruvec_state() is already safe against irqs, so there is no need to
have a separate interface (i.e. mod_lruvec_state) which wraps calls to it
with irq disabling and reenabling. Let's rename __mod_lruvec_state() to
mod_lruvec_state().

Link: https://lkml.kernel.org/r/20251110232008.1352063-4-shakeel.butt@linux.dev
Signed-off-by: Shakeel Butt <shakeel.butt@linux.dev>
Reviewed-by: Harry Yoo <harry.yoo@oracle.com>
Acked-by: Roman Gushchin <roman.gushchin@linux.dev>
Acked-by: Vlastimil Babka <vbabka@suse.cz>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Michal Hocko <mhocko@kernel.org>
Cc: Muchun Song <muchun.song@linux.dev>
Cc: Qi Zheng <zhengqi.arch@bytedance.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Shakeel Butt and committed by
Andrew Morton
5b3eb779 469241fe

+18 -34
+1 -1
include/linux/mm_inline.h
··· 44 44 lockdep_assert_held(&lruvec->lru_lock); 45 45 WARN_ON_ONCE(nr_pages != (int)nr_pages); 46 46 47 - __mod_lruvec_state(lruvec, NR_LRU_BASE + lru, nr_pages); 47 + mod_lruvec_state(lruvec, NR_LRU_BASE + lru, nr_pages); 48 48 __mod_zone_page_state(&pgdat->node_zones[zid], 49 49 NR_ZONE_LRU_BASE + lru, nr_pages); 50 50 }
+1 -17
include/linux/vmstat.h
··· 520 520 521 521 #ifdef CONFIG_MEMCG 522 522 523 - void __mod_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, 523 + void mod_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, 524 524 int val); 525 - 526 - static inline void mod_lruvec_state(struct lruvec *lruvec, 527 - enum node_stat_item idx, int val) 528 - { 529 - unsigned long flags; 530 - 531 - local_irq_save(flags); 532 - __mod_lruvec_state(lruvec, idx, val); 533 - local_irq_restore(flags); 534 - } 535 525 536 526 void __lruvec_stat_mod_folio(struct folio *folio, 537 527 enum node_stat_item idx, int val); ··· 543 553 } 544 554 545 555 #else 546 - 547 - static inline void __mod_lruvec_state(struct lruvec *lruvec, 548 - enum node_stat_item idx, int val) 549 - { 550 - mod_node_page_state(lruvec_pgdat(lruvec), idx, val); 551 - } 552 556 553 557 static inline void mod_lruvec_state(struct lruvec *lruvec, 554 558 enum node_stat_item idx, int val)
+4 -4
mm/memcontrol.c
··· 757 757 } 758 758 759 759 /** 760 - * __mod_lruvec_state - update lruvec memory statistics 760 + * mod_lruvec_state - update lruvec memory statistics 761 761 * @lruvec: the lruvec 762 762 * @idx: the stat item 763 763 * @val: delta to add to the counter, can be negative ··· 766 766 * function updates the all three counters that are affected by a 767 767 * change of state at this level: per-node, per-cgroup, per-lruvec. 768 768 */ 769 - void __mod_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, 769 + void mod_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx, 770 770 int val) 771 771 { 772 772 /* Update node */ ··· 794 794 } 795 795 796 796 lruvec = mem_cgroup_lruvec(memcg, pgdat); 797 - __mod_lruvec_state(lruvec, idx, val); 797 + mod_lruvec_state(lruvec, idx, val); 798 798 rcu_read_unlock(); 799 799 } 800 800 EXPORT_SYMBOL(__lruvec_stat_mod_folio); ··· 818 818 mod_node_page_state(pgdat, idx, val); 819 819 } else { 820 820 lruvec = mem_cgroup_lruvec(memcg, pgdat); 821 - __mod_lruvec_state(lruvec, idx, val); 821 + mod_lruvec_state(lruvec, idx, val); 822 822 } 823 823 rcu_read_unlock(); 824 824 }
+10 -10
mm/migrate.c
··· 675 675 old_lruvec = mem_cgroup_lruvec(memcg, oldzone->zone_pgdat); 676 676 new_lruvec = mem_cgroup_lruvec(memcg, newzone->zone_pgdat); 677 677 678 - __mod_lruvec_state(old_lruvec, NR_FILE_PAGES, -nr); 679 - __mod_lruvec_state(new_lruvec, NR_FILE_PAGES, nr); 678 + mod_lruvec_state(old_lruvec, NR_FILE_PAGES, -nr); 679 + mod_lruvec_state(new_lruvec, NR_FILE_PAGES, nr); 680 680 if (folio_test_swapbacked(folio) && !folio_test_swapcache(folio)) { 681 - __mod_lruvec_state(old_lruvec, NR_SHMEM, -nr); 682 - __mod_lruvec_state(new_lruvec, NR_SHMEM, nr); 681 + mod_lruvec_state(old_lruvec, NR_SHMEM, -nr); 682 + mod_lruvec_state(new_lruvec, NR_SHMEM, nr); 683 683 684 684 if (folio_test_pmd_mappable(folio)) { 685 - __mod_lruvec_state(old_lruvec, NR_SHMEM_THPS, -nr); 686 - __mod_lruvec_state(new_lruvec, NR_SHMEM_THPS, nr); 685 + mod_lruvec_state(old_lruvec, NR_SHMEM_THPS, -nr); 686 + mod_lruvec_state(new_lruvec, NR_SHMEM_THPS, nr); 687 687 } 688 688 } 689 689 #ifdef CONFIG_SWAP 690 690 if (folio_test_swapcache(folio)) { 691 - __mod_lruvec_state(old_lruvec, NR_SWAPCACHE, -nr); 692 - __mod_lruvec_state(new_lruvec, NR_SWAPCACHE, nr); 691 + mod_lruvec_state(old_lruvec, NR_SWAPCACHE, -nr); 692 + mod_lruvec_state(new_lruvec, NR_SWAPCACHE, nr); 693 693 } 694 694 #endif 695 695 if (dirty && mapping_can_writeback(mapping)) { 696 - __mod_lruvec_state(old_lruvec, NR_FILE_DIRTY, -nr); 696 + mod_lruvec_state(old_lruvec, NR_FILE_DIRTY, -nr); 697 697 __mod_zone_page_state(oldzone, NR_ZONE_WRITE_PENDING, -nr); 698 - __mod_lruvec_state(new_lruvec, NR_FILE_DIRTY, nr); 698 + mod_lruvec_state(new_lruvec, NR_FILE_DIRTY, nr); 699 699 __mod_zone_page_state(newzone, NR_ZONE_WRITE_PENDING, nr); 700 700 } 701 701 }
+2 -2
mm/vmscan.c
··· 2018 2018 spin_lock_irq(&lruvec->lru_lock); 2019 2019 move_folios_to_lru(lruvec, &folio_list); 2020 2020 2021 - __mod_lruvec_state(lruvec, PGDEMOTE_KSWAPD + reclaimer_offset(sc), 2021 + mod_lruvec_state(lruvec, PGDEMOTE_KSWAPD + reclaimer_offset(sc), 2022 2022 stat.nr_demoted); 2023 2023 __mod_node_page_state(pgdat, NR_ISOLATED_ANON + file, -nr_taken); 2024 2024 item = PGSTEAL_KSWAPD + reclaimer_offset(sc); ··· 4744 4744 reset_batch_size(walk); 4745 4745 } 4746 4746 4747 - __mod_lruvec_state(lruvec, PGDEMOTE_KSWAPD + reclaimer_offset(sc), 4747 + mod_lruvec_state(lruvec, PGDEMOTE_KSWAPD + reclaimer_offset(sc), 4748 4748 stat.nr_demoted); 4749 4749 4750 4750 item = PGSTEAL_KSWAPD + reclaimer_offset(sc);