mirror of
https://github.com/torvalds/linux.git
synced 2026-05-28 00:53:34 +02:00
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>
This commit is contained in:
parent
5866891a7a
commit
20ccbd89af
19
mm/vmscan.c
19
mm/vmscan.c
|
|
@ -5416,7 +5416,7 @@ static int lru_gen_seq_show(struct seq_file *m, void *v)
|
|||
if (memcg)
|
||||
cgroup_path(memcg->css.cgroup, m->private, PATH_MAX);
|
||||
#endif
|
||||
seq_printf(m, "memcg %5hu %s\n", mem_cgroup_id(memcg), path);
|
||||
seq_printf(m, "memcg %llu %s\n", mem_cgroup_ino(memcg), path);
|
||||
}
|
||||
|
||||
seq_printf(m, " node %5d\n", nid);
|
||||
|
|
@ -5501,7 +5501,7 @@ static int run_eviction(struct lruvec *lruvec, unsigned long seq, struct scan_co
|
|||
return -EINTR;
|
||||
}
|
||||
|
||||
static int run_cmd(char cmd, int memcg_id, int nid, unsigned long seq,
|
||||
static int run_cmd(char cmd, u64 memcg_id, int nid, unsigned long seq,
|
||||
struct scan_control *sc, int swappiness, unsigned long opt)
|
||||
{
|
||||
struct lruvec *lruvec;
|
||||
|
|
@ -5512,19 +5512,12 @@ static int run_cmd(char cmd, int memcg_id, int nid, unsigned long seq,
|
|||
return -EINVAL;
|
||||
|
||||
if (!mem_cgroup_disabled()) {
|
||||
rcu_read_lock();
|
||||
|
||||
memcg = mem_cgroup_from_id(memcg_id);
|
||||
if (!mem_cgroup_tryget(memcg))
|
||||
memcg = NULL;
|
||||
|
||||
rcu_read_unlock();
|
||||
|
||||
memcg = mem_cgroup_get_from_ino(memcg_id);
|
||||
if (!memcg)
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (memcg_id != mem_cgroup_id(memcg))
|
||||
if (memcg_id != mem_cgroup_ino(memcg))
|
||||
goto done;
|
||||
|
||||
sc->target_mem_cgroup = memcg;
|
||||
|
|
@ -5591,7 +5584,7 @@ static ssize_t lru_gen_seq_write(struct file *file, const char __user *src,
|
|||
int n;
|
||||
int end;
|
||||
char cmd, swap_string[5];
|
||||
unsigned int memcg_id;
|
||||
u64 memcg_id;
|
||||
unsigned int nid;
|
||||
unsigned long seq;
|
||||
unsigned int swappiness;
|
||||
|
|
@ -5601,7 +5594,7 @@ static ssize_t lru_gen_seq_write(struct file *file, const char __user *src,
|
|||
if (!*cur)
|
||||
continue;
|
||||
|
||||
n = sscanf(cur, "%c %u %u %lu %n %4s %n %lu %n", &cmd, &memcg_id, &nid,
|
||||
n = sscanf(cur, "%c %llu %u %lu %n %4s %n %lu %n", &cmd, &memcg_id, &nid,
|
||||
&seq, &end, swap_string, &end, &opt, &end);
|
||||
if (n < 4 || cur[end]) {
|
||||
err = -EINVAL;
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user