diff options
author | Luke Shumaker <lukeshu@parabola.nu> | 2017-07-17 21:25:11 -0400 |
---|---|---|
committer | Luke Shumaker <lukeshu@parabola.nu> | 2018-08-16 21:55:16 -0400 |
commit | aa4ec7c7ad44dcfb26ccf2cfc01bf3a2ad4b4a0c (patch) | |
tree | b526cb32cf07e06e112f0019fc4ce1f2c9ee5849 | |
parent | 043757d17d2615f6579a93682361aa9a3ac18d80 (diff) |
nspawn: Allow the container to inherit a 232-style hybrid (#6310)
-rw-r--r-- | src/nspawn/nspawn-cgroup.c | 10 | ||||
-rw-r--r-- | src/nspawn/nspawn.c | 13 |
2 files changed, 19 insertions, 4 deletions
diff --git a/src/nspawn/nspawn-cgroup.c b/src/nspawn/nspawn-cgroup.c index 554253d555..9b8f8f4e22 100644 --- a/src/nspawn/nspawn-cgroup.c +++ b/src/nspawn/nspawn-cgroup.c @@ -391,7 +391,10 @@ skip_controllers: case CGROUP_UNIFIED_ALL: assert_not_reached("cgroup v2 requested in cgroup v1 function"); case CGROUP_UNIFIED_SYSTEMD232: - assert_not_reached("systemd 232-style hybrid not supported"); + r = mount_legacy_cgroup_hierarchy("", SYSTEMD_CGROUP_CONTROLLER_HYBRID, "systemd", false); + if (r < 0) + return r; + break; case CGROUP_UNIFIED_SYSTEMD233: r = mount_legacy_cgroup_hierarchy("", SYSTEMD_CGROUP_CONTROLLER_HYBRID, "unified", false); if (r < 0) @@ -511,7 +514,10 @@ skip_controllers: case CGROUP_UNIFIED_ALL: assert_not_reached("cgroup v2 requested in cgroup v1 function"); case CGROUP_UNIFIED_SYSTEMD232: - assert_not_reached("systemd 232-style hybrid not supported"); + r = mount_legacy_cgroup_hierarchy(dest, SYSTEMD_CGROUP_CONTROLLER_HYBRID, "systemd", false); + if (r < 0) + return r; + break; case CGROUP_UNIFIED_SYSTEMD233: r = mount_legacy_cgroup_hierarchy(dest, SYSTEMD_CGROUP_CONTROLLER_HYBRID, "unified", false); if (r < 0) diff --git a/src/nspawn/nspawn.c b/src/nspawn/nspawn.c index fc6cb60e94..96ea27e57c 100644 --- a/src/nspawn/nspawn.c +++ b/src/nspawn/nspawn.c @@ -367,8 +367,7 @@ static int detect_inner_cgver_from_image(const char *directory) { arg_inner_cgver = CGROUP_UNIFIED_NONE; break; case CGROUP_UNIFIED_SYSTEMD233: - case CGROUP_UNIFIED_SYSTEMD232: - /* Mixed cgroup hierarchy support was added in 233 */ + /* systemd v233+ -style mixed cgroup hierarchy */ r = systemd_installation_has_version(directory, 233); if (r < 0) return log_error_errno(r, "Failed to determine systemd version in container: %m"); @@ -377,6 +376,16 @@ static int detect_inner_cgver_from_image(const char *directory) { else arg_inner_cgver = CGROUP_UNIFIED_NONE; break; + case CGROUP_UNIFIED_SYSTEMD232: + /* systemd v232 -style mixed cgroup hierarchy */ + r = systemd_installation_has_version(directory, 232); + if (r < 0) + return log_error_errno(r, "Failed to decide cgroup version to use: Failed to determine systemd version in container: %m"); + if (r > 0) + arg_inner_cgver = CGROUP_UNIFIED_SYSTEMD232; + else + arg_inner_cgver = CGROUP_UNIFIED_NONE; + break; case CGROUP_UNIFIED_NONE: arg_inner_cgver = CGROUP_UNIFIED_NONE; break; |