Skip to content

Commit

Permalink
cgmanager: slow down there (don't always grab abs cgroup path)
Browse files Browse the repository at this point in the history
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: Serge Hallyn <serge.hallyn@ubuntu.com>
Acked-by: Stéphane Graber <stgraber@ubuntu.com>
  • Loading branch information
hallyn authored and stgraber committed May 21, 2014
1 parent e2ad73b commit 98fbe1e
Showing 1 changed file with 16 additions and 16 deletions.
32 changes: 16 additions & 16 deletions src/lxc/cgmanager.c
Expand Up @@ -714,14 +714,13 @@ static int cgm_get(const char *filename, char *value, size_t len, const char *na
return -1;
*key = '\0';

if (!cgm_dbus_connect()) {
ERROR("Error connecting to cgroup manager");
/* use the command interface to look for the cgroup */
cgroup = lxc_cmd_get_cgroup_path(name, lxcpath, controller);
if (!cgroup)
return -1;
}

cgroup = try_get_abs_cgroup(name, lxcpath, controller);
if (!cgroup) {
cgm_dbus_disconnect();
if (!cgm_dbus_connect()) {
ERROR("Error connecting to cgroup manager");
return -1;
}

Expand All @@ -734,12 +733,12 @@ static int cgm_get(const char *filename, char *value, size_t len, const char *na
NihError *nerr;
nerr = nih_error_get();
nih_free(nerr);
free_abs_cgroup(cgroup);
free(cgroup);
cgm_dbus_disconnect();
return -1;
}
cgm_dbus_disconnect();
free_abs_cgroup(cgroup);
free(cgroup);
newlen = strlen(result);
if (!len || !value) {
// user queries the size
Expand Down Expand Up @@ -790,21 +789,22 @@ static int cgm_set(const char *filename, const char *value, const char *name, co
return -1;
*key = '\0';

if (!cgm_dbus_connect()) {
ERROR("Error connecting to cgroup manager");
free(cgroup);
return false;
}
cgroup = try_get_abs_cgroup(name, lxcpath, controller);
/* use the command interface to look for the cgroup */
cgroup = lxc_cmd_get_cgroup_path(name, lxcpath, controller);
if (!cgroup) {
ERROR("Failed to get cgroup for controller %s for %s:%s",
controller, lxcpath, name);
cgm_dbus_disconnect();
return -1;
}

if (!cgm_dbus_connect()) {
ERROR("Error connecting to cgroup manager");
free(cgroup);
return false;
}
ret = cgm_do_set(controller, filename, cgroup, value);
cgm_dbus_disconnect();
free_abs_cgroup(cgroup);
free(cgroup);
return ret;
}

Expand Down

0 comments on commit 98fbe1e

Please sign in to comment.