[Devel] [PATCH v8 0/9] Make release_agent per-cgroup property. Run release_agent in proper ve.
Valeriy Vdovin
valeriy.vdovin at virtuozzo.com
Thu Apr 16 13:06:24 MSK 2020
Problems:
1. Currently release_agent is a mount-wide cgroup property, single for whole hierarchy. It is
not possible to override it's value for a cgroup down the hierarchy, which is a virtual root
for a container.
2. Code that spawnes release_agent notification processes, does so from ve0, inside of a container
any logic that waits for notifications of empty cgroups will fail,
see https://jira.sw.ru/browse/PSBM-83887 for an example of such problem with systemd.
Solution:
In this patchset release_agent is moved from 'struct cgroupfs_root' to 'struct cgroup', enabling
the possibility to set release_agent per-ve.
Also 'struct cgroup' recieves a pointer to owning ve, so that release_agent notifications
could be spawned under the right ve.
v1: Removed complex locking scheme for ve_owner<->cgroup binding.
v2: release_agent_path protected by RCU
v3: cgroup_root_from_opts uses ..set_release_agent helper without lockdep
v4: fixed possible race at cgroup_release_agent
v5: Use per-ve workqueue to maintain per-ve cgroups notifications
v6: rebased to latest branch
v7: Fixed lockdeps, removed dependency from is_running param.
v8: cgroup_rcu_strdup uses strlcpy, ve_get_release_agent releases list spinlock early,
patchset was split into lesser changes.
Valeriy Vdovin (9):
Implemented per-ve workqueue.
cgroup: Added rcu node string wrapper for in-cgroup usage.
cgroup: Declared cgroup_mark_ve_root in public header
Exported __put_css_set and wrappers to cgroup.h
ve/cgroup: Saving root_css to ve
ve/cgroup: unmark ve-root cgroups at container stop
ve/cgroup: Moved cgroup release notifications to per-ve workqueues.
ve/cgroup: private per-cgroup-root data container
ve/cgroup: Set release_agent_path for root cgroups separately for each
ve.
include/linux/cgroup.h | 40 ++++++-
include/linux/ve.h | 33 ++++++
kernel/cgroup.c | 311 +++++++++++++++++++++++++++++++++++++------------
kernel/ve/ve.c | 221 ++++++++++++++++++++++++++++++++++-
4 files changed, 525 insertions(+), 80 deletions(-)
--
1.8.3.1
More information about the Devel
mailing list