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

Valeriy Vdovin (2):
  cgroup: 'release_agent' property is now per-cgroup instead of
    per-mount.
  ve/cgroup: Added pointers to owning ve to root cgroups

 include/linux/cgroup.h |  17 +++-
 kernel/cgroup.c        | 228 +++++++++++++++++++++++++++++++++++++++++++++----
 kernel/ve/ve.c         |   8 +-
 3 files changed, 230 insertions(+), 23 deletions(-)

-- 
1.8.3.1

_______________________________________________
Devel mailing list
Devel@openvz.org
https://lists.openvz.org/mailman/listinfo/devel

Reply via email to