memcg: remove __mod_lruvec_kmem_state

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

Link: https://lkml.kernel.org/r/20251110232008.1352063-3-shakeel.butt@linux.dev
Signed-off-by: Shakeel Butt <shakeel.butt@linux.dev>
Reviewed-by: Harry Yoo <harry.yoo@oracle.com>
Reviewed-by: Qi Zheng <zhengqi.arch@bytedance.com>
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: Roman Gushchin <roman.gushchin@linux.dev>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
Shakeel Butt 2025-11-10 15:20:06 -08:00 committed by Andrew Morton
parent 7e44d00a13
commit 469241fe76
3 changed files with 7 additions and 25 deletions

View File

@ -957,17 +957,7 @@ unsigned long lruvec_page_state_local(struct lruvec *lruvec,
void mem_cgroup_flush_stats(struct mem_cgroup *memcg); void mem_cgroup_flush_stats(struct mem_cgroup *memcg);
void mem_cgroup_flush_stats_ratelimited(struct mem_cgroup *memcg); void mem_cgroup_flush_stats_ratelimited(struct mem_cgroup *memcg);
void __mod_lruvec_kmem_state(void *p, enum node_stat_item idx, int val); void mod_lruvec_kmem_state(void *p, enum node_stat_item idx, int val);
static inline void mod_lruvec_kmem_state(void *p, enum node_stat_item idx,
int val)
{
unsigned long flags;
local_irq_save(flags);
__mod_lruvec_kmem_state(p, idx, val);
local_irq_restore(flags);
}
void count_memcg_events(struct mem_cgroup *memcg, enum vm_event_item idx, void count_memcg_events(struct mem_cgroup *memcg, enum vm_event_item idx,
unsigned long count); unsigned long count);
@ -1403,14 +1393,6 @@ static inline void mem_cgroup_flush_stats_ratelimited(struct mem_cgroup *memcg)
{ {
} }
static inline void __mod_lruvec_kmem_state(void *p, enum node_stat_item idx,
int val)
{
struct page *page = virt_to_head_page(p);
mod_node_page_state(page_pgdat(page), idx, val);
}
static inline void mod_lruvec_kmem_state(void *p, enum node_stat_item idx, static inline void mod_lruvec_kmem_state(void *p, enum node_stat_item idx,
int val) int val)
{ {
@ -1470,14 +1452,14 @@ struct slabobj_ext {
#endif #endif
} __aligned(8); } __aligned(8);
static inline void __inc_lruvec_kmem_state(void *p, enum node_stat_item idx) static inline void inc_lruvec_kmem_state(void *p, enum node_stat_item idx)
{ {
__mod_lruvec_kmem_state(p, idx, 1); mod_lruvec_kmem_state(p, idx, 1);
} }
static inline void __dec_lruvec_kmem_state(void *p, enum node_stat_item idx) static inline void dec_lruvec_kmem_state(void *p, enum node_stat_item idx)
{ {
__mod_lruvec_kmem_state(p, idx, -1); mod_lruvec_kmem_state(p, idx, -1);
} }
static inline struct lruvec *parent_lruvec(struct lruvec *lruvec) static inline struct lruvec *parent_lruvec(struct lruvec *lruvec)

View File

@ -799,7 +799,7 @@ void __lruvec_stat_mod_folio(struct folio *folio, enum node_stat_item idx,
} }
EXPORT_SYMBOL(__lruvec_stat_mod_folio); EXPORT_SYMBOL(__lruvec_stat_mod_folio);
void __mod_lruvec_kmem_state(void *p, enum node_stat_item idx, int val) void mod_lruvec_kmem_state(void *p, enum node_stat_item idx, int val)
{ {
pg_data_t *pgdat = page_pgdat(virt_to_page(p)); pg_data_t *pgdat = page_pgdat(virt_to_page(p));
struct mem_cgroup *memcg; struct mem_cgroup *memcg;

View File

@ -749,7 +749,7 @@ static enum lru_status shadow_lru_isolate(struct list_head *item,
if (WARN_ON_ONCE(node->count != node->nr_values)) if (WARN_ON_ONCE(node->count != node->nr_values))
goto out_invalid; goto out_invalid;
xa_delete_node(node, workingset_update_node); xa_delete_node(node, workingset_update_node);
__inc_lruvec_kmem_state(node, WORKINGSET_NODERECLAIM); inc_lruvec_kmem_state(node, WORKINGSET_NODERECLAIM);
out_invalid: out_invalid:
xa_unlock_irq(&mapping->i_pages); xa_unlock_irq(&mapping->i_pages);