]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mm/damon/sysfs: setup damon_filter->memcg_id from path
authorSeongJae Park <sj@kernel.org>
Mon, 18 May 2026 23:41:14 +0000 (16:41 -0700)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 2 Jun 2026 22:22:31 +0000 (15:22 -0700)
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>
include/linux/damon.h
mm/damon/core.c
mm/damon/sysfs.c

index 6a54c601889bd2cf37cd7b1d30a20fa1c52b59c8..4014fd0d463cb1dcaade86215a83eb37ce8f563d 100644 (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);
index 9a5a835a4d3f7532020afa376cf881b5ecfb0807..4e223857a0f99234f6e952ea9af16969a126aedd 100644 (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);
index 0f6379caf4816d5cf9b2124b1f5352a43f7a9588..2e95e3bac774dc4b1034a3b5506caa15df96133c 100644 (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);
                }
        }