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.

mm/vmscan: use cgroup ID instead of private memcg ID in lru_gen interface

The LRU gen debugfs interface was using the internal private memcg ID
which is meant for tracking kernel objects that outlive their cgroup.
Switch to using the public cgroup ID instead.

Link: https://lkml.kernel.org/r/20251225232116.294540-7-shakeel.butt@linux.dev
Signed-off-by: Shakeel Butt <shakeel.butt@linux.dev>
Acked-by: Michal Hocko <mhocko@suse.com>
Cc: Axel Rasmussen <axelrasmussen@google.com>
Cc: Dave Chinner <david@fromorbit.com>
Cc: David Hildenbrand <david@kernel.org>
Cc: Johannes Weiner <hannes@cmpxchg.org>
Cc: Lorenzo Stoakes <lorenzo.stoakes@oracle.com>
Cc: Muchun Song <muchun.song@linux.dev>
Cc: Qi Zheng <zhengqi.arch@bytedance.com>
Cc: Roman Gushchin <roman.gushchin@linux.dev>
Cc: SeongJae Park <sj@kernel.org>
Cc: Wei Xu <weixugc@google.com>
Cc: Yuanchu Xie <yuanchu@google.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>

authored by

Shakeel Butt and committed by
Andrew Morton
20ccbd89 5866891a

+6 -13
+6 -13
mm/vmscan.c
··· 5416 5416 if (memcg) 5417 5417 cgroup_path(memcg->css.cgroup, m->private, PATH_MAX); 5418 5418 #endif 5419 - seq_printf(m, "memcg %5hu %s\n", mem_cgroup_id(memcg), path); 5419 + seq_printf(m, "memcg %llu %s\n", mem_cgroup_ino(memcg), path); 5420 5420 } 5421 5421 5422 5422 seq_printf(m, " node %5d\n", nid); ··· 5501 5501 return -EINTR; 5502 5502 } 5503 5503 5504 - static int run_cmd(char cmd, int memcg_id, int nid, unsigned long seq, 5504 + static int run_cmd(char cmd, u64 memcg_id, int nid, unsigned long seq, 5505 5505 struct scan_control *sc, int swappiness, unsigned long opt) 5506 5506 { 5507 5507 struct lruvec *lruvec; ··· 5512 5512 return -EINVAL; 5513 5513 5514 5514 if (!mem_cgroup_disabled()) { 5515 - rcu_read_lock(); 5516 - 5517 - memcg = mem_cgroup_from_id(memcg_id); 5518 - if (!mem_cgroup_tryget(memcg)) 5519 - memcg = NULL; 5520 - 5521 - rcu_read_unlock(); 5522 - 5515 + memcg = mem_cgroup_get_from_ino(memcg_id); 5523 5516 if (!memcg) 5524 5517 return -EINVAL; 5525 5518 } 5526 5519 5527 - if (memcg_id != mem_cgroup_id(memcg)) 5520 + if (memcg_id != mem_cgroup_ino(memcg)) 5528 5521 goto done; 5529 5522 5530 5523 sc->target_mem_cgroup = memcg; ··· 5584 5591 int n; 5585 5592 int end; 5586 5593 char cmd, swap_string[5]; 5587 - unsigned int memcg_id; 5594 + u64 memcg_id; 5588 5595 unsigned int nid; 5589 5596 unsigned long seq; 5590 5597 unsigned int swappiness; ··· 5594 5601 if (!*cur) 5595 5602 continue; 5596 5603 5597 - n = sscanf(cur, "%c %u %u %lu %n %4s %n %lu %n", &cmd, &memcg_id, &nid, 5604 + n = sscanf(cur, "%c %llu %u %lu %n %4s %n %lu %n", &cmd, &memcg_id, &nid, 5598 5605 &seq, &end, swap_string, &end, &opt, &end); 5599 5606 if (n < 4 || cur[end]) { 5600 5607 err = -EINVAL;