mirror of
https://github.com/torvalds/linux.git
synced 2026-07-27 17:47:41 +02:00
mm/damon/sysfs-schemes: move memcg_path_to_id() to sysfs-common
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>
This commit is contained in:
parent
c71f8e1346
commit
b2025ce066
|
|
@ -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;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
|
|
|||
|
|
@ -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)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user