mm/damon/sysfs: setup damon_filter->memcg_id from path

Find and set the memcg_id for damon_filter from the user-passed memory
cgroup path when updating the DAMON input parameters.

Link: https://lore.kernel.org/20260518234119.97569-27-sj@kernel.org
Signed-off-by: SeongJae Park <sj@kernel.org>
Cc: David Hildenbrand <david@kernel.org>
Cc: Jonathan Corbet <corbet@lwn.net>
Cc: Liam R. Howlett <liam@infradead.org>
Cc: Lorenzo Stoakes <ljs@kernel.org>
Cc: "Masami Hiramatsu (Google)" <mhiramat@kernel.org>
Cc: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Mike Rapoport <rppt@kernel.org>
Cc: Shuah Khan <shuah@kernel.org>
Cc: Steven Rostedt <rostedt@goodmis.org>
Cc: Suren Baghdasaryan <surenb@google.com>
Cc: Vlastimil Babka <vbabka@kernel.org>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
This commit is contained in:
SeongJae Park
2026-05-18 16:41:14 -07:00
committed by Andrew Morton
parent b2025ce066
commit 543ab01db7
3 changed files with 13 additions and 1 deletions

View File

@@ -1006,6 +1006,7 @@ static inline unsigned long damon_sz_region(struct damon_region *r)
struct damon_filter *damon_new_filter(enum damon_filter_type type,
bool matching, bool allow);
void damon_add_filter(struct damon_probe *probe, struct damon_filter *f);
void damon_destroy_filter(struct damon_filter *f);
struct damon_probe *damon_new_probe(void);
void damon_add_probe(struct damon_ctx *ctx, struct damon_probe *probe);

View File

@@ -143,7 +143,7 @@ static void damon_free_filter(struct damon_filter *f)
kfree(f);
}
static void damon_destroy_filter(struct damon_filter *f)
void damon_destroy_filter(struct damon_filter *f)
{
damon_del_filter(f);
damon_free_filter(f);

View File

@@ -1927,6 +1927,17 @@ static int damon_sysfs_set_probes(struct damon_ctx *ctx,
sys_filter->allow);
if (!filter)
return -ENOMEM;
if (filter->type == DAMON_FILTER_TYPE_MEMCG) {
int err;
err = damon_sysfs_memcg_path_to_id(
sys_filter->path,
&filter->memcg_id);
if (err) {
damon_destroy_filter(filter);
return err;
}
}
damon_add_filter(c, filter);
}
}