]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
mm/damon/sysfs-schemes: move memcg_path_to_id() to sysfs-common
authorSeongJae Park <sj@kernel.org>
Mon, 18 May 2026 23:41:13 +0000 (16:41 -0700)
committerAndrew Morton <akpm@linux-foundation.org>
Tue, 2 Jun 2026 22:22:30 +0000 (15:22 -0700)
The next commit will need to find the memcg id from the user-passed path
to the memory cgroup, from sysfs.c.  memcg_path_to_id() is doing that, but
defined in sysfs-schemes.c as a static function.  Move the function to
sysfs-common.c and mark it as non-static, so that the next commit can
reuse the function.

Link: https://lore.kernel.org/20260518234119.97569-26-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>
mm/damon/sysfs-common.c
mm/damon/sysfs-common.h
mm/damon/sysfs-schemes.c

index 83e24a9b5a0dbd80b00f04ad2582a1bb477ff628..bdc6ae2639e4f9369597ae3795b7c81697a6c363 100644 (file)
@@ -104,3 +104,44 @@ const struct kobj_type damon_sysfs_ul_range_ktype = {
        .default_groups = damon_sysfs_ul_range_groups,
 };
 
+
+static bool damon_sysfs_memcg_path_eq(struct mem_cgroup *memcg,
+               char *memcg_path_buf, char *path)
+{
+#ifdef CONFIG_MEMCG
+       cgroup_path(memcg->css.cgroup, memcg_path_buf, PATH_MAX);
+       if (sysfs_streq(memcg_path_buf, path))
+               return true;
+#endif /* CONFIG_MEMCG */
+       return false;
+}
+
+int damon_sysfs_memcg_path_to_id(char *memcg_path, u64 *id)
+{
+       struct mem_cgroup *memcg;
+       char *path;
+       bool found = false;
+
+       if (!memcg_path)
+               return -EINVAL;
+
+       path = kmalloc_array(PATH_MAX, sizeof(*path), GFP_KERNEL);
+       if (!path)
+               return -ENOMEM;
+
+       for (memcg = mem_cgroup_iter(NULL, NULL, NULL); memcg;
+                       memcg = mem_cgroup_iter(NULL, memcg, NULL)) {
+               /* skip offlined memcg */
+               if (!mem_cgroup_online(memcg))
+                       continue;
+               if (damon_sysfs_memcg_path_eq(memcg, path, memcg_path)) {
+                       *id = mem_cgroup_id(memcg);
+                       found = true;
+                       mem_cgroup_iter_break(NULL, memcg);
+                       break;
+               }
+       }
+
+       kfree(path);
+       return found ? 0 : -EINVAL;
+}
index 2099adee11d0523f9752de722ac1ebea14e46563..3079306966a910081ddea7a9eea4c60399fdcff7 100644 (file)
@@ -59,3 +59,5 @@ int damos_sysfs_set_quota_scores(struct damon_sysfs_schemes *sysfs_schemes,
 void damos_sysfs_update_effective_quotas(
                struct damon_sysfs_schemes *sysfs_schemes,
                struct damon_ctx *ctx);
+
+int damon_sysfs_memcg_path_to_id(char *memcg_path, u64 *id);
index e25f4824b72fd4867eebf0bb8d13deef2cb52d15..329cfd0bbe9f326e6d814523cf932f045b1137e7 100644 (file)
@@ -2791,47 +2791,6 @@ const struct kobj_type damon_sysfs_schemes_ktype = {
        .default_groups = damon_sysfs_schemes_groups,
 };
 
-static bool damon_sysfs_memcg_path_eq(struct mem_cgroup *memcg,
-               char *memcg_path_buf, char *path)
-{
-#ifdef CONFIG_MEMCG
-       cgroup_path(memcg->css.cgroup, memcg_path_buf, PATH_MAX);
-       if (sysfs_streq(memcg_path_buf, path))
-               return true;
-#endif /* CONFIG_MEMCG */
-       return false;
-}
-
-static int damon_sysfs_memcg_path_to_id(char *memcg_path, u64 *id)
-{
-       struct mem_cgroup *memcg;
-       char *path;
-       bool found = false;
-
-       if (!memcg_path)
-               return -EINVAL;
-
-       path = kmalloc_array(PATH_MAX, sizeof(*path), GFP_KERNEL);
-       if (!path)
-               return -ENOMEM;
-
-       for (memcg = mem_cgroup_iter(NULL, NULL, NULL); memcg;
-                       memcg = mem_cgroup_iter(NULL, memcg, NULL)) {
-               /* skip offlined memcg */
-               if (!mem_cgroup_online(memcg))
-                       continue;
-               if (damon_sysfs_memcg_path_eq(memcg, path, memcg_path)) {
-                       *id = mem_cgroup_id(memcg);
-                       found = true;
-                       mem_cgroup_iter_break(NULL, memcg);
-                       break;
-               }
-       }
-
-       kfree(path);
-       return found ? 0 : -EINVAL;
-}
-
 static int damon_sysfs_add_scheme_filters(struct damos *scheme,
                struct damon_sysfs_scheme_filters *sysfs_filters)
 {