Skip to content

Commit 91882c1

Browse files
shakeelbakpm00
authored andcommitted
memcg: simple cleanup of stats update functions
mod_memcg_lruvec_state() is never called from outside of memcontrol.c and with always irq disabled. So, replace it with the irq disabled version and add an assert that irq is disabled in the caller. Similarly mod_objcg_state() is not called from outside of memcontrol.c, so simply make it static and change it's name to __mod_objcg_state(). Link: https://lkml.kernel.org/r/[email protected] Signed-off-by: Shakeel Butt <[email protected]> Acked-by: Johannes Weiner <[email protected]> Reviewed-by: T.J. Mercier <[email protected]> Cc: Michal Hocko <[email protected]> Cc: Muchun Song <[email protected]> Cc: Roman Gushchin <[email protected]> Signed-off-by: Andrew Morton <[email protected]>
1 parent 6ed31ba commit 91882c1

File tree

3 files changed

+15
-35
lines changed

3 files changed

+15
-35
lines changed

include/linux/memcontrol.h

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1077,8 +1077,6 @@ static inline unsigned long lruvec_page_state_local(struct lruvec *lruvec,
10771077
void mem_cgroup_flush_stats(struct mem_cgroup *memcg);
10781078
void mem_cgroup_flush_stats_ratelimited(struct mem_cgroup *memcg);
10791079

1080-
void __mod_memcg_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx,
1081-
int val);
10821080
void __mod_lruvec_kmem_state(void *p, enum node_stat_item idx, int val);
10831081

10841082
static inline void mod_lruvec_kmem_state(void *p, enum node_stat_item idx,
@@ -1091,16 +1089,6 @@ static inline void mod_lruvec_kmem_state(void *p, enum node_stat_item idx,
10911089
local_irq_restore(flags);
10921090
}
10931091

1094-
static inline void mod_memcg_lruvec_state(struct lruvec *lruvec,
1095-
enum node_stat_item idx, int val)
1096-
{
1097-
unsigned long flags;
1098-
1099-
local_irq_save(flags);
1100-
__mod_memcg_lruvec_state(lruvec, idx, val);
1101-
local_irq_restore(flags);
1102-
}
1103-
11041092
void __count_memcg_events(struct mem_cgroup *memcg, enum vm_event_item idx,
11051093
unsigned long count);
11061094

@@ -1594,11 +1582,6 @@ static inline void mem_cgroup_flush_stats_ratelimited(struct mem_cgroup *memcg)
15941582
{
15951583
}
15961584

1597-
static inline void __mod_memcg_lruvec_state(struct lruvec *lruvec,
1598-
enum node_stat_item idx, int val)
1599-
{
1600-
}
1601-
16021585
static inline void __mod_lruvec_kmem_state(void *p, enum node_stat_item idx,
16031586
int val)
16041587
{

mm/memcontrol.c

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -836,8 +836,9 @@ static unsigned long memcg_page_state_local(struct mem_cgroup *memcg, int idx)
836836
return x;
837837
}
838838

839-
void __mod_memcg_lruvec_state(struct lruvec *lruvec, enum node_stat_item idx,
840-
int val)
839+
static void __mod_memcg_lruvec_state(struct lruvec *lruvec,
840+
enum node_stat_item idx,
841+
int val)
841842
{
842843
struct mem_cgroup_per_node *pn;
843844
struct mem_cgroup *memcg;
@@ -2978,21 +2979,19 @@ void mem_cgroup_commit_charge(struct folio *folio, struct mem_cgroup *memcg)
29782979

29792980
#ifdef CONFIG_MEMCG_KMEM
29802981

2981-
/*
2982-
* mod_objcg_mlstate() may be called with irq enabled, so
2983-
* mod_memcg_lruvec_state() should be used.
2984-
*/
2985-
static inline void mod_objcg_mlstate(struct obj_cgroup *objcg,
2986-
struct pglist_data *pgdat,
2987-
enum node_stat_item idx, int nr)
2982+
static inline void __mod_objcg_mlstate(struct obj_cgroup *objcg,
2983+
struct pglist_data *pgdat,
2984+
enum node_stat_item idx, int nr)
29882985
{
29892986
struct mem_cgroup *memcg;
29902987
struct lruvec *lruvec;
29912988

2989+
lockdep_assert_irqs_disabled();
2990+
29922991
rcu_read_lock();
29932992
memcg = obj_cgroup_memcg(objcg);
29942993
lruvec = mem_cgroup_lruvec(memcg, pgdat);
2995-
mod_memcg_lruvec_state(lruvec, idx, nr);
2994+
__mod_memcg_lruvec_state(lruvec, idx, nr);
29962995
rcu_read_unlock();
29972996
}
29982997

@@ -3312,7 +3311,7 @@ void __memcg_kmem_uncharge_page(struct page *page, int order)
33123311
obj_cgroup_put(objcg);
33133312
}
33143313

3315-
void mod_objcg_state(struct obj_cgroup *objcg, struct pglist_data *pgdat,
3314+
static void mod_objcg_state(struct obj_cgroup *objcg, struct pglist_data *pgdat,
33163315
enum node_stat_item idx, int nr)
33173316
{
33183317
struct memcg_stock_pcp *stock;
@@ -3340,12 +3339,12 @@ void mod_objcg_state(struct obj_cgroup *objcg, struct pglist_data *pgdat,
33403339
struct pglist_data *oldpg = stock->cached_pgdat;
33413340

33423341
if (stock->nr_slab_reclaimable_b) {
3343-
mod_objcg_mlstate(objcg, oldpg, NR_SLAB_RECLAIMABLE_B,
3342+
__mod_objcg_mlstate(objcg, oldpg, NR_SLAB_RECLAIMABLE_B,
33443343
stock->nr_slab_reclaimable_b);
33453344
stock->nr_slab_reclaimable_b = 0;
33463345
}
33473346
if (stock->nr_slab_unreclaimable_b) {
3348-
mod_objcg_mlstate(objcg, oldpg, NR_SLAB_UNRECLAIMABLE_B,
3347+
__mod_objcg_mlstate(objcg, oldpg, NR_SLAB_UNRECLAIMABLE_B,
33493348
stock->nr_slab_unreclaimable_b);
33503349
stock->nr_slab_unreclaimable_b = 0;
33513350
}
@@ -3371,7 +3370,7 @@ void mod_objcg_state(struct obj_cgroup *objcg, struct pglist_data *pgdat,
33713370
}
33723371
}
33733372
if (nr)
3374-
mod_objcg_mlstate(objcg, pgdat, idx, nr);
3373+
__mod_objcg_mlstate(objcg, pgdat, idx, nr);
33753374

33763375
local_unlock_irqrestore(&memcg_stock.stock_lock, flags);
33773376
obj_cgroup_put(old);
@@ -3437,13 +3436,13 @@ static struct obj_cgroup *drain_obj_stock(struct memcg_stock_pcp *stock)
34373436
*/
34383437
if (stock->nr_slab_reclaimable_b || stock->nr_slab_unreclaimable_b) {
34393438
if (stock->nr_slab_reclaimable_b) {
3440-
mod_objcg_mlstate(old, stock->cached_pgdat,
3439+
__mod_objcg_mlstate(old, stock->cached_pgdat,
34413440
NR_SLAB_RECLAIMABLE_B,
34423441
stock->nr_slab_reclaimable_b);
34433442
stock->nr_slab_reclaimable_b = 0;
34443443
}
34453444
if (stock->nr_slab_unreclaimable_b) {
3446-
mod_objcg_mlstate(old, stock->cached_pgdat,
3445+
__mod_objcg_mlstate(old, stock->cached_pgdat,
34473446
NR_SLAB_UNRECLAIMABLE_B,
34483447
stock->nr_slab_unreclaimable_b);
34493448
stock->nr_slab_unreclaimable_b = 0;

mm/slab.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -581,8 +581,6 @@ bool __memcg_slab_post_alloc_hook(struct kmem_cache *s, struct list_lru *lru,
581581
gfp_t flags, size_t size, void **p);
582582
void __memcg_slab_free_hook(struct kmem_cache *s, struct slab *slab,
583583
void **p, int objects, struct slabobj_ext *obj_exts);
584-
void mod_objcg_state(struct obj_cgroup *objcg, struct pglist_data *pgdat,
585-
enum node_stat_item idx, int nr);
586584
#endif
587585

588586
size_t __ksize(const void *objp);

0 commit comments

Comments
 (0)