Commit fd527175 by Serge Hallyn Committed by Stéphane Graber

cgmanager: slow down there (don't always grab abs cgroup path)

When I converted attach and enter to using move_pid_abs, these needed to use the new get_pid_cgroup_abs method to get an absolute path. But for some inexplicable reason I also converted the functions which get and set cgroup properties to use the absolute paths. These are simply not compatible with the cgmanager set_value and get_value methods. This breaks for instance lxc-test-cgpath. So undo that. With this patch lxc-test-cgpath, lxc-test-autotest, and lxc-test-concurrent once again pass in a nested container. Signed-off-by: 's avatarSerge Hallyn <serge.hallyn@ubuntu.com> Acked-by: 's avatarStéphane Graber <stgraber@ubuntu.com>
parent fd4d297d
...@@ -714,14 +714,13 @@ static int cgm_get(const char *filename, char *value, size_t len, const char *na ...@@ -714,14 +714,13 @@ static int cgm_get(const char *filename, char *value, size_t len, const char *na
return -1; return -1;
*key = '\0'; *key = '\0';
if (!cgm_dbus_connect()) { /* use the command interface to look for the cgroup */
ERROR("Error connecting to cgroup manager"); cgroup = lxc_cmd_get_cgroup_path(name, lxcpath, controller);
if (!cgroup)
return -1; return -1;
}
cgroup = try_get_abs_cgroup(name, lxcpath, controller); if (!cgm_dbus_connect()) {
if (!cgroup) { ERROR("Error connecting to cgroup manager");
cgm_dbus_disconnect();
return -1; return -1;
} }
...@@ -734,12 +733,12 @@ static int cgm_get(const char *filename, char *value, size_t len, const char *na ...@@ -734,12 +733,12 @@ static int cgm_get(const char *filename, char *value, size_t len, const char *na
NihError *nerr; NihError *nerr;
nerr = nih_error_get(); nerr = nih_error_get();
nih_free(nerr); nih_free(nerr);
free_abs_cgroup(cgroup); free(cgroup);
cgm_dbus_disconnect(); cgm_dbus_disconnect();
return -1; return -1;
} }
cgm_dbus_disconnect(); cgm_dbus_disconnect();
free_abs_cgroup(cgroup); free(cgroup);
newlen = strlen(result); newlen = strlen(result);
if (!len || !value) { if (!len || !value) {
// user queries the size // user queries the size
...@@ -790,21 +789,22 @@ static int cgm_set(const char *filename, const char *value, const char *name, co ...@@ -790,21 +789,22 @@ static int cgm_set(const char *filename, const char *value, const char *name, co
return -1; return -1;
*key = '\0'; *key = '\0';
if (!cgm_dbus_connect()) { /* use the command interface to look for the cgroup */
ERROR("Error connecting to cgroup manager"); cgroup = lxc_cmd_get_cgroup_path(name, lxcpath, controller);
free(cgroup);
return false;
}
cgroup = try_get_abs_cgroup(name, lxcpath, controller);
if (!cgroup) { if (!cgroup) {
ERROR("Failed to get cgroup for controller %s for %s:%s", ERROR("Failed to get cgroup for controller %s for %s:%s",
controller, lxcpath, name); controller, lxcpath, name);
cgm_dbus_disconnect();
return -1; return -1;
} }
if (!cgm_dbus_connect()) {
ERROR("Error connecting to cgroup manager");
free(cgroup);
return false;
}
ret = cgm_do_set(controller, filename, cgroup, value); ret = cgm_do_set(controller, filename, cgroup, value);
cgm_dbus_disconnect(); cgm_dbus_disconnect();
free_abs_cgroup(cgroup); free(cgroup);
return ret; return ret;
} }
......
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