Question on damon_sysfs_memcg_path_to_id() path resolution

Song Hu <[email protected]>
Newsgroups dev.linux.lists.damon
Message-ID <[email protected]>
Hi SeongJae,

I've been reading the memcg path->id resolution used by DAMOS filters
and quota goals, and I'd like to ask about a design choice before
suggesting any change.

damon_sysfs_memcg_path_to_id() (mm/damon/sysfs-common.c) resolves the
user-written cgroup path by iterating all memcgs with
mem_cgroup_iter() and comparing each one's cgroup_path() to the
target.  It could instead call cgroup_get_from_path() directly, but
the two don't resolve the path the same way:

  - current code: cgroup_path(memcg->css.cgroup) is just kernfs_path(),
    i.e. the absolute path in the cgroup hierarchy, independent of the
    caller's cgroup namespace;

  - cgroup_get_from_path(): resolves the path against
    current_cgns_cgroup_dfl(), i.e. relative to the caller's cgroup
    namespace.

So in a cgroup-namespaced (container) setup the two disagree: today
the lookup is absolute; switching to cgroup_get_from_path() would make
it namespace-relative.  On the host / init namespace they agree.

I ask because the iteration has already needed one stable fix
(d4e7b5c4cc35, a missing mem_cgroup_iter_break() that leaked a cgroup
reference), and cgroup_get_from_path() is a matched get/put pair that
would avoid that whole class of mistake -- but only if the namespace
behavior change is acceptable.

Is the absolute-path behavior intentional?  If namespace-relative
resolution is fine, I'm happy to send a patch (keeping the
mem_cgroup_online() skip).  If not, I'll leave it as is.

Thanks,
Song
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.