]> git.ipfire.org Git - thirdparty/systemd.git/commit - src/core/cgroup.c
units: enable waiting for unit termination in certain cases
authorLennart Poettering <lennart@poettering.net>
Tue, 1 Sep 2015 15:25:59 +0000 (17:25 +0200)
committerLennart Poettering <lennart@poettering.net>
Tue, 1 Sep 2015 15:44:17 +0000 (17:44 +0200)
commite9db43d5910717a1084924c512bf85e2b8265375
tree6435db76781a17d47340d509ed2cbe2d44dcf0fc
parent957c3cf97cd0063a3b78aa068d5351ae3b1b0c0c
units: enable waiting for unit termination in certain cases

The legacy cgroup hierarchy does not support reliable empty
notifications in containers and if there are left-over subgroups in a
cgroup. This makes it hard to correctly wait for them running empty, and
thus we previously disabled this logic entirely.

With this change we explicitly check for the container case, and whether
the unit is a "delegation" unit (i.e. one where programs may create
their own subgroups). If we are neither in a container, nor operating on
a delegation unit cgroup empty notifications become reliable and thus we
start waiting for the empty notifications again.

This doesn't really fix the general problem around cgroup notifications
but reduces the effect around it.

(This also reorders #include lines by their focus, as suggsted in
CODING_STYLE. We have to add "virt.h", so let's do that at the right
place.)

Also see #317.
src/core/cgroup.c
src/core/cgroup.h
src/core/unit.c