mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-07 07:50:06 +00:00
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: Serge Hallyn <serge.hallyn@ubuntu.com> Acked-by: Stéphane Graber <stgraber@ubuntu.com>
This commit is contained in:
parent
fd4d297dd6
commit
fd527175ad
@ -714,17 +714,16 @@ static int cgm_get(const char *filename, char *value, size_t len, const char *na
|
|||||||
return -1;
|
return -1;
|
||||||
*key = '\0';
|
*key = '\0';
|
||||||
|
|
||||||
|
/* use the command interface to look for the cgroup */
|
||||||
|
cgroup = lxc_cmd_get_cgroup_path(name, lxcpath, controller);
|
||||||
|
if (!cgroup)
|
||||||
|
return -1;
|
||||||
|
|
||||||
if (!cgm_dbus_connect()) {
|
if (!cgm_dbus_connect()) {
|
||||||
ERROR("Error connecting to cgroup manager");
|
ERROR("Error connecting to cgroup manager");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
cgroup = try_get_abs_cgroup(name, lxcpath, controller);
|
|
||||||
if (!cgroup) {
|
|
||||||
cgm_dbus_disconnect();
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cgmanager_get_value_sync(NULL, cgroup_manager, controller, cgroup, filename, &result) != 0) {
|
if (cgmanager_get_value_sync(NULL, cgroup_manager, controller, cgroup, filename, &result) != 0) {
|
||||||
/*
|
/*
|
||||||
* must consume the nih error
|
* must consume the nih error
|
||||||
@ -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
|
|||||||
return -1;
|
return -1;
|
||||||
*key = '\0';
|
*key = '\0';
|
||||||
|
|
||||||
|
/* 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);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
if (!cgm_dbus_connect()) {
|
if (!cgm_dbus_connect()) {
|
||||||
ERROR("Error connecting to cgroup manager");
|
ERROR("Error connecting to cgroup manager");
|
||||||
free(cgroup);
|
free(cgroup);
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
cgroup = try_get_abs_cgroup(name, lxcpath, controller);
|
|
||||||
if (!cgroup) {
|
|
||||||
ERROR("Failed to get cgroup for controller %s for %s:%s",
|
|
||||||
controller, lxcpath, name);
|
|
||||||
cgm_dbus_disconnect();
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user