cgfsng: mount pure unified cgroup layout correctly

When pure cgroup unified mode is used we cannot pre-mount a tmpfs as this confuses systemd. Users should also set lxc.mount.auto = cgroup:force to ensure that systemd in the container and on the host use identical cgroup layouts. Signed-off-by: 's avatarChristian Brauner <christian.brauner@ubuntu.com>
parent 942e193e
...@@ -1761,8 +1761,8 @@ static inline int cg_mount_cgroup_full(int type, struct hierarchy *h, ...@@ -1761,8 +1761,8 @@ static inline int cg_mount_cgroup_full(int type, struct hierarchy *h,
} }
__cgfsng_ops static bool cgfsng_mount(struct cgroup_ops *ops, __cgfsng_ops static bool cgfsng_mount(struct cgroup_ops *ops,
struct lxc_handler *handler, struct lxc_handler *handler,
const char *root, int type) const char *root, int type)
{ {
__do_free char *tmpfspath = NULL; __do_free char *tmpfspath = NULL;
int ret; int ret;
...@@ -1795,8 +1795,23 @@ __cgfsng_ops static bool cgfsng_mount(struct cgroup_ops *ops, ...@@ -1795,8 +1795,23 @@ __cgfsng_ops static bool cgfsng_mount(struct cgroup_ops *ops,
else if (type == LXC_AUTO_CGROUP_FULL_NOSPEC) else if (type == LXC_AUTO_CGROUP_FULL_NOSPEC)
type = LXC_AUTO_CGROUP_FULL_MIXED; type = LXC_AUTO_CGROUP_FULL_MIXED;
/* Mount tmpfs */ if (ops->cgroup_layout == CGROUP_LAYOUT_UNIFIED) {
tmpfspath = must_make_path(root, "/sys/fs/cgroup", NULL); __do_free char *unified_path = NULL;
unified_path = must_make_path(root, "/sys/fs/cgroup", NULL);
if (has_cgns && wants_force_mount) {
/* If cgroup namespaces are supported but the container
* will not have CAP_SYS_ADMIN after it has started we
* need to mount the cgroups manually.
*/
return cg_mount_in_cgroup_namespace(type, ops->unified,
unified_path) == 0;
}
return cg_mount_cgroup_full(type, ops->unified, unified_path) == 0;
}
/* mount tmpfs */
ret = safe_mount(NULL, tmpfspath, "tmpfs", ret = safe_mount(NULL, tmpfspath, "tmpfs",
MS_NOSUID | MS_NODEV | MS_NOEXEC | MS_RELATIME, MS_NOSUID | MS_NODEV | MS_NOEXEC | MS_RELATIME,
"size=10240k,mode=755", root); "size=10240k,mode=755", root);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment