diff options
author | Lennart Poettering <lennart@poettering.net> | 2014-07-03 12:50:11 +0200 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2014-07-03 12:51:07 +0200 |
commit | ce38dbc84b40148026801dd29fd0ad1f1b25d3fb (patch) | |
tree | 244cdf17483e5f1b1edae8e1014ac0fcd76ccad6 /src/nspawn/nspawn.c | |
parent | 206e7a5f7b55ac61188efd895e65ab26e478cbb2 (diff) |
nspawn: when running in a service unit, use systemd for restarts
THis way we can remove cgroup priviliges after setup, but get them back
for the next restart, as we need it.
Diffstat (limited to 'src/nspawn/nspawn.c')
-rw-r--r-- | src/nspawn/nspawn.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index 656c1bf9f5..0d538c2543 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -3342,6 +3342,21 @@ int main(int argc, char *argv[]) { break; /* CONTAINER_REBOOTED, loop again */ + + if (arg_keep_unit) { + /* Special handling if we are running as a + * service: instead of simply restarting the + * machine we want to restart the entire + * service, so let's inform systemd about this + * with the special exit code 133. The service + * file uses RestartForceExitStatus=133 so + * that this results in a full nspawn + * restart. This is necessary since we might + * have cgroup parameters set we want to have + * flushed out. */ + r = 133; + break; + } } finish: |