summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@lukeshu.com>2017-06-13 22:27:40 -0400
committerLuke Shumaker <lukeshu@parabola.nu>2018-08-16 21:55:16 -0400
commit723def8885613b7546bcc1499af0b6c96db9ad0a (patch)
treed073af0d62978356d0f193c88bc6a6a2840120c9
parent872157908a1657a59b2fcf7e7d2ee0a165f544ce (diff)
nspawn: Parse UNIFIED_CGROUP_HIERARCHY similarly to any other arg
-rw-r--r--src/nspawn/nspawn.c19
1 files changed, 8 insertions, 11 deletions
diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c
index d698cc8ad8..24f47fa636 100644
--- a/src/nspawn/nspawn.c
+++ b/src/nspawn/nspawn.c
@@ -323,23 +323,22 @@ static int custom_mount_check_all(void) {
return 0;
}
-static int detect_inner_cgver_from_environment(void) {
+static void parse_inner_cgver_env(void) {
const char *e;
int r;
- /* Allow the user to control whether the unified hierarchy is used */
e = getenv("UNIFIED_CGROUP_HIERARCHY");
if (e) {
r = parse_boolean(e);
- if (r < 0)
- return log_error_errno(r, "Failed to parse $UNIFIED_CGROUP_HIERARCHY.");
- if (r > 0)
+ if (r < 0) {
+ log_warning_errno(r, "Failed to parse UNIFIED_CGROUP_HIERARCHY from environment, ignoring.");
+ arg_inner_cgver = CGROUP_UNIFIED_UNKNOWN;
+ return;
+ } else if (r > 0)
arg_inner_cgver = CGROUP_UNIFIED_ALL;
else
arg_inner_cgver = CGROUP_UNIFIED_NONE;
}
-
- return 0;
}
static int detect_inner_cgver_from_image(const char *directory) {
@@ -1268,6 +1267,8 @@ static int parse_argv(int argc, char *argv[]) {
return -EINVAL;
}
+ parse_inner_cgver_env();
+
parse_share_ns_env("SYSTEMD_NSPAWN_SHARE_NS_IPC", CLONE_NEWIPC);
parse_share_ns_env("SYSTEMD_NSPAWN_SHARE_NS_PID", CLONE_NEWPID);
parse_share_ns_env("SYSTEMD_NSPAWN_SHARE_NS_UTS", CLONE_NEWUTS);
@@ -4234,10 +4235,6 @@ int main(int argc, char *argv[]) {
if (r < 0)
goto finish;
- r = detect_inner_cgver_from_environment();
- if (r < 0)
- goto finish;
-
n_fd_passed = sd_listen_fds(false);
if (n_fd_passed > 0) {
r = fdset_new_listen_fds(&fds, false);