Existing cgroup_get_e_css() is not suited for cgroup-v1 and will always return root cgroup css. Implement new cgroup_get_e_ve_css to return ve css.
https://jira.sw.ru/browse/PSBM-131253 Signed-off-by: Andrey Zhadchenko <[email protected]> --- include/linux/cgroup.h | 2 ++ kernel/cgroup/cgroup.c | 17 +++++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/include/linux/cgroup.h b/include/linux/cgroup.h index 1223bc8..dbe6137 100644 --- a/include/linux/cgroup.h +++ b/include/linux/cgroup.h @@ -876,6 +876,8 @@ int cgroup_path_ns(struct cgroup *cgrp, char *buf, size_t buflen, void cgroup_unmark_ve_roots(struct ve_struct *ve); struct cgroup_subsys_state *css_local_root(struct cgroup_subsys_state *css); struct ve_struct *cgroup_get_ve_owner(struct cgroup *cgrp); +struct cgroup_subsys_state *cgroup_get_e_ve_css(struct cgroup *cgrp, + struct cgroup_subsys *ss); #endif #else /* !CONFIG_CGROUPS */ diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c index 57ff462c..ad72ebb 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -656,6 +656,23 @@ struct cgroup_subsys_state *cgroup_get_e_css(struct cgroup *cgrp, return css; } +#ifdef CONFIG_VE +struct cgroup_subsys_state *cgroup_get_e_ve_css(struct cgroup *cgrp, + struct cgroup_subsys *ss) +{ + struct cgroup_subsys_state *css; + struct ve_struct *ve; + + rcu_read_lock(); + + ve = cgroup_get_ve_owner(cgrp); + css = ve_get_init_css(ve, ss->id); + + rcu_read_unlock(); + return css; +} +#endif + static void cgroup_get_live(struct cgroup *cgrp) { WARN_ON_ONCE(cgroup_is_dead(cgrp)); -- 1.8.3.1 _______________________________________________ Devel mailing list [email protected] https://lists.openvz.org/mailman/listinfo/devel
