From fd527175ad02cef8a33999865392f30e69c70dfa Mon Sep 17 00:00:00 2001 From: Serge Hallyn Date: Tue, 20 May 2014 11:47:17 -0500 Subject: [PATCH] cgmanager: slow down there (don't always grab abs cgroup path) MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 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 Acked-by: Stéphane Graber --- src/lxc/cgmanager.c | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/lxc/cgmanager.c b/src/lxc/cgmanager.c index 9b06d3182..3a5525aba 100644 --- a/src/lxc/cgmanager.c +++ b/src/lxc/cgmanager.c @@ -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; } @@ -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 @@ -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; } -- 2.47.2