Message ID | 20250315174930.1769599-10-shakeel.butt@linux.dev (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | memcg: cleanup per-cpu stock | expand |
On Sat, Mar 15, 2025 at 10:49:30AM -0700, Shakeel Butt wrote: > The replace_stock_objcg() is being called by only refill_obj_stock, so > manually inline it. > > Signed-off-by: Shakeel Butt <shakeel.butt@linux.dev> Reviewed-by: Roman Gushchin <roman.gushchin@linux.dev> Thanks!
On 3/15/25 18:49, Shakeel Butt wrote: > The replace_stock_objcg() is being called by only refill_obj_stock, so > manually inline it. > > Signed-off-by: Shakeel Butt <shakeel.butt@linux.dev> Acked-by: Vlastimil Babka <vbabka@suse.cz> > --- > mm/memcontrol.c | 18 ++++++------------ > 1 file changed, 6 insertions(+), 12 deletions(-) > > diff --git a/mm/memcontrol.c b/mm/memcontrol.c > index 553eb1d7250a..f6e3fc418866 100644 > --- a/mm/memcontrol.c > +++ b/mm/memcontrol.c > @@ -2742,17 +2742,6 @@ void __memcg_kmem_uncharge_page(struct page *page, int order) > obj_cgroup_put(objcg); > } > > -/* Replace the stock objcg with objcg, return the old objcg */ > -static void replace_stock_objcg(struct memcg_stock_pcp *stock, > - struct obj_cgroup *objcg) > -{ > - drain_obj_stock(stock); > - obj_cgroup_get(objcg); > - stock->nr_bytes = atomic_read(&objcg->nr_charged_bytes) > - ? atomic_xchg(&objcg->nr_charged_bytes, 0) : 0; > - WRITE_ONCE(stock->cached_objcg, objcg); > -} > - > static void __account_obj_stock(struct obj_cgroup *objcg, > struct memcg_stock_pcp *stock, int nr, > struct pglist_data *pgdat, enum node_stat_item idx) > @@ -2913,7 +2902,12 @@ static void refill_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes, > > stock = this_cpu_ptr(&memcg_stock); > if (READ_ONCE(stock->cached_objcg) != objcg) { /* reset if necessary */ > - replace_stock_objcg(stock, objcg); > + drain_obj_stock(stock); > + obj_cgroup_get(objcg); > + stock->nr_bytes = atomic_read(&objcg->nr_charged_bytes) > + ? atomic_xchg(&objcg->nr_charged_bytes, 0) : 0; > + WRITE_ONCE(stock->cached_objcg, objcg); > + > allow_uncharge = true; /* Allow uncharge when objcg changes */ > } > stock->nr_bytes += nr_bytes;
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index 553eb1d7250a..f6e3fc418866 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c @@ -2742,17 +2742,6 @@ void __memcg_kmem_uncharge_page(struct page *page, int order) obj_cgroup_put(objcg); } -/* Replace the stock objcg with objcg, return the old objcg */ -static void replace_stock_objcg(struct memcg_stock_pcp *stock, - struct obj_cgroup *objcg) -{ - drain_obj_stock(stock); - obj_cgroup_get(objcg); - stock->nr_bytes = atomic_read(&objcg->nr_charged_bytes) - ? atomic_xchg(&objcg->nr_charged_bytes, 0) : 0; - WRITE_ONCE(stock->cached_objcg, objcg); -} - static void __account_obj_stock(struct obj_cgroup *objcg, struct memcg_stock_pcp *stock, int nr, struct pglist_data *pgdat, enum node_stat_item idx) @@ -2913,7 +2902,12 @@ static void refill_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes, stock = this_cpu_ptr(&memcg_stock); if (READ_ONCE(stock->cached_objcg) != objcg) { /* reset if necessary */ - replace_stock_objcg(stock, objcg); + drain_obj_stock(stock); + obj_cgroup_get(objcg); + stock->nr_bytes = atomic_read(&objcg->nr_charged_bytes) + ? atomic_xchg(&objcg->nr_charged_bytes, 0) : 0; + WRITE_ONCE(stock->cached_objcg, objcg); + allow_uncharge = true; /* Allow uncharge when objcg changes */ } stock->nr_bytes += nr_bytes;
The replace_stock_objcg() is being called by only refill_obj_stock, so manually inline it. Signed-off-by: Shakeel Butt <shakeel.butt@linux.dev> --- mm/memcontrol.c | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-)