[Devel] [PATCH 0/2 v3] Make release_agent per-cgroup property. Run release_agent in proper ve.

Pavel Tikhomirov ptikhomirov at virtuozzo.com
Tue Mar 24 14:01:05 MSK 2020


Reviewed-by: Pavel Tikhomirov <ptikhomirov at virtuozzo.com>

On 3/24/20 1:46 PM, Valeriy Vdovin wrote:
> 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
> 
> 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        | 217 +++++++++++++++++++++++++++++++++++++++++++++----
>   kernel/ve/ve.c         |   8 +-
>   3 files changed, 219 insertions(+), 23 deletions(-)
> 

-- 
Best regards, Tikhomirov Pavel
Software Developer, Virtuozzo.


More information about the Devel mailing list