Skip to content

Commit bc812d1

Browse files
Chen Ridongakpm00
authored andcommitted
memcg: factor out the replace_stock_objcg function
Factor out the 'replace_stock_objcg' function to make the code more cohesive. Link: https://lkml.kernel.org/r/20250124073514.2375622-4-chenridong@huaweicloud.com Signed-off-by: Chen Ridong <chenridong@huawei.com> Reviewed-by: Roman Gushchin <roman.gushchin@linux.dev> Acked-by: Shakeel Butt <shakeel.butt@linux.dev> Acked-by: Johannes Weiner <hannes@cmpxchg.org> Cc: David Finkel <davidf@vimeo.com> Cc: Michal Hocko <mhocko@kernel.org> Cc: Michal Hocko <mhocko@suse.com> Cc: Michal Koutný <mkoutny@suse.com> Cc: Muchun Song <muchun.song@linux.dev> Cc: Muchun Song <songmuchun@bytedance.com> Cc: Vlastimil Babka <vbabka@suse.cz> Cc: Wang Weiyang <wangweiyang2@huawei.com> Cc: Yosry Ahmed <yosryahmed@google.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
1 parent 2059c8e commit bc812d1

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

mm/memcontrol.c

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2700,6 +2700,20 @@ void __memcg_kmem_uncharge_page(struct page *page, int order)
27002700
obj_cgroup_put(objcg);
27012701
}
27022702

2703+
/* Replace the stock objcg with objcg, return the old objcg */
2704+
static struct obj_cgroup *replace_stock_objcg(struct memcg_stock_pcp *stock,
2705+
struct obj_cgroup *objcg)
2706+
{
2707+
struct obj_cgroup *old = NULL;
2708+
2709+
old = drain_obj_stock(stock);
2710+
obj_cgroup_get(objcg);
2711+
stock->nr_bytes = atomic_read(&objcg->nr_charged_bytes)
2712+
? atomic_xchg(&objcg->nr_charged_bytes, 0) : 0;
2713+
WRITE_ONCE(stock->cached_objcg, objcg);
2714+
return old;
2715+
}
2716+
27032717
static void mod_objcg_state(struct obj_cgroup *objcg, struct pglist_data *pgdat,
27042718
enum node_stat_item idx, int nr)
27052719
{
@@ -2717,11 +2731,7 @@ static void mod_objcg_state(struct obj_cgroup *objcg, struct pglist_data *pgdat,
27172731
* changes.
27182732
*/
27192733
if (READ_ONCE(stock->cached_objcg) != objcg) {
2720-
old = drain_obj_stock(stock);
2721-
obj_cgroup_get(objcg);
2722-
stock->nr_bytes = atomic_read(&objcg->nr_charged_bytes)
2723-
? atomic_xchg(&objcg->nr_charged_bytes, 0) : 0;
2724-
WRITE_ONCE(stock->cached_objcg, objcg);
2734+
old = replace_stock_objcg(stock, objcg);
27252735
stock->cached_pgdat = pgdat;
27262736
} else if (stock->cached_pgdat != pgdat) {
27272737
/* Flush the existing cached vmstat data */
@@ -2875,11 +2885,7 @@ static void refill_obj_stock(struct obj_cgroup *objcg, unsigned int nr_bytes,
28752885

28762886
stock = this_cpu_ptr(&memcg_stock);
28772887
if (READ_ONCE(stock->cached_objcg) != objcg) { /* reset if necessary */
2878-
old = drain_obj_stock(stock);
2879-
obj_cgroup_get(objcg);
2880-
WRITE_ONCE(stock->cached_objcg, objcg);
2881-
stock->nr_bytes = atomic_read(&objcg->nr_charged_bytes)
2882-
? atomic_xchg(&objcg->nr_charged_bytes, 0) : 0;
2888+
old = replace_stock_objcg(stock, objcg);
28832889
allow_uncharge = true; /* Allow uncharge when objcg changes */
28842890
}
28852891
stock->nr_bytes += nr_bytes;

0 commit comments

Comments
 (0)