chiark / gitweb /
service: place control command in subcgroup control/
authorLennart Poettering <lennart@poettering.net>
Fri, 13 Apr 2012 21:24:47 +0000 (23:24 +0200)
committerLennart Poettering <lennart@poettering.net>
Fri, 13 Apr 2012 21:29:59 +0000 (23:29 +0200)
commitecedd90fcdf647f9a7b56b4934b65e30b2979b04
tree6e8bc8e509801a7c3801c1e77244df6dec72ac1c
parent3b6d9a7c50bd7217a0ca80d39fd30decbb0c935a
service: place control command in subcgroup control/

Previously, we were brutally and onconditionally killing all processes
in a service's cgroup before starting the service anew, in order to
ensure that StartPre lines cannot be misused to spawn long-running
processes.

On logind-less systems this has the effect that restarting sshd
necessarily calls all active ssh sessions, which is usually not
desirable.

With this patch control processes for a service are placed in a
sub-cgroup called "control/". When starting a service anew we simply
kill this cgroup, but not the main cgroup, in order to avoid killing any
long-running non-control processes from previous runs.

https://bugzilla.redhat.com/show_bug.cgi?id=805942
TODO
src/core/cgroup.c
src/core/cgroup.h
src/core/execute.c
src/core/execute.h
src/core/mount.c
src/core/service.c
src/core/socket.c
src/core/swap.c