mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-08 04:36:21 +00:00
cgroup: don't set clone_children when it is already 1
In particular, if it's already 1, and we can't change it, we currently fail out. That's silly. I was going to just always continue, but if clone_children is not 1, then the container *will* fail to start later on, so I'd rather stop earlier on so the original cause doesn't get lost in the noise. Signed-off-by: Serge Hallyn <serge.hallyn@ubuntu.com> Acked-by: Stéphane Graber <stgraber@ubuntu.com>
This commit is contained in:
parent
58d6a17e02
commit
7e7243e16b
@ -1944,6 +1944,7 @@ int count_lines(const char *fn)
|
|||||||
int handle_cgroup_settings(struct cgroup_mount_point *mp, char *cgroup_path)
|
int handle_cgroup_settings(struct cgroup_mount_point *mp, char *cgroup_path)
|
||||||
{
|
{
|
||||||
int r, saved_errno = 0;
|
int r, saved_errno = 0;
|
||||||
|
char buf[2];
|
||||||
|
|
||||||
/* If this is the memory cgroup, we want to enforce hierarchy.
|
/* If this is the memory cgroup, we want to enforce hierarchy.
|
||||||
* But don't fail if for some reason we can't.
|
* But don't fail if for some reason we can't.
|
||||||
@ -1951,9 +1952,12 @@ int handle_cgroup_settings(struct cgroup_mount_point *mp, char *cgroup_path)
|
|||||||
if (lxc_string_in_array("memory", (const char **)mp->hierarchy->subsystems)) {
|
if (lxc_string_in_array("memory", (const char **)mp->hierarchy->subsystems)) {
|
||||||
char *cc_path = cgroup_to_absolute_path(mp, cgroup_path, "/memory.use_hierarchy");
|
char *cc_path = cgroup_to_absolute_path(mp, cgroup_path, "/memory.use_hierarchy");
|
||||||
if (cc_path) {
|
if (cc_path) {
|
||||||
|
r = lxc_read_from_file(cc_path, buf, 1);
|
||||||
|
if (r < 1 || buf[0] != '1') {
|
||||||
r = lxc_write_to_file(cc_path, "1", 1, false);
|
r = lxc_write_to_file(cc_path, "1", 1, false);
|
||||||
if (r < 0)
|
if (r < 0)
|
||||||
SYSERROR("failed to set memory.use_hiararchy to 1; continuing");
|
SYSERROR("failed to set memory.use_hiararchy to 1; continuing");
|
||||||
|
}
|
||||||
free(cc_path);
|
free(cc_path);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1966,6 +1970,11 @@ int handle_cgroup_settings(struct cgroup_mount_point *mp, char *cgroup_path)
|
|||||||
char *cc_path = cgroup_to_absolute_path(mp, cgroup_path, "/cgroup.clone_children");
|
char *cc_path = cgroup_to_absolute_path(mp, cgroup_path, "/cgroup.clone_children");
|
||||||
if (!cc_path)
|
if (!cc_path)
|
||||||
return -1;
|
return -1;
|
||||||
|
r = lxc_read_from_file(cc_path, buf, 1);
|
||||||
|
if (r == 1 && buf[0] == '1') {
|
||||||
|
free(cc_path);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
r = lxc_write_to_file(cc_path, "1", 1, false);
|
r = lxc_write_to_file(cc_path, "1", 1, false);
|
||||||
saved_errno = errno;
|
saved_errno = errno;
|
||||||
free(cc_path);
|
free(cc_path);
|
||||||
|
Loading…
Reference in New Issue
Block a user