mirror of
https://git.proxmox.com/git/mirror_lxc
synced 2025-08-11 17:02:56 +00:00
Merge pull request #829 from hallyn/2016-02-19/devices
cgroups: do not fail if setting devices cgroup fails due to EPERM
This commit is contained in:
commit
b9138559c3
@ -1285,10 +1285,13 @@ static int lxc_cgroup_set_data(const char *filename, const char *value, struct c
|
|||||||
if ((p = strchr(subsystem, '.')) != NULL)
|
if ((p = strchr(subsystem, '.')) != NULL)
|
||||||
*p = '\0';
|
*p = '\0';
|
||||||
|
|
||||||
|
errno = ENOENT;
|
||||||
path = lxc_cgroup_get_hierarchy_abs_path_data(subsystem, d);
|
path = lxc_cgroup_get_hierarchy_abs_path_data(subsystem, d);
|
||||||
if (path) {
|
if (path) {
|
||||||
ret = do_cgroup_set(path, filename, value);
|
ret = do_cgroup_set(path, filename, value);
|
||||||
|
int saved_errno = errno;
|
||||||
free(path);
|
free(path);
|
||||||
|
errno = saved_errno;
|
||||||
}
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
@ -1915,6 +1918,11 @@ static int do_setup_cgroup_limits(struct cgfs_data *d,
|
|||||||
cgroup_devices_has_allow_or_deny(d, cg->value, true))
|
cgroup_devices_has_allow_or_deny(d, cg->value, true))
|
||||||
continue;
|
continue;
|
||||||
if (lxc_cgroup_set_data(cg->subsystem, cg->value, d)) {
|
if (lxc_cgroup_set_data(cg->subsystem, cg->value, d)) {
|
||||||
|
if (do_devices && errno == EPERM) {
|
||||||
|
WARN("Error setting %s to %s for %s",
|
||||||
|
cg->subsystem, cg->value, d->name);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
ERROR("Error setting %s to %s for %s",
|
ERROR("Error setting %s to %s for %s",
|
||||||
cg->subsystem, cg->value, d->name);
|
cg->subsystem, cg->value, d->name);
|
||||||
goto out;
|
goto out;
|
||||||
|
@ -1523,6 +1523,14 @@ static bool cgm_setup_limits(void *hdata, struct lxc_list *cgroup_settings, bool
|
|||||||
d->cgroup_path, cg->subsystem, cg->value) != 0) {
|
d->cgroup_path, cg->subsystem, cg->value) != 0) {
|
||||||
NihError *nerr;
|
NihError *nerr;
|
||||||
nerr = nih_error_get();
|
nerr = nih_error_get();
|
||||||
|
if (do_devices) {
|
||||||
|
WARN("call to cgmanager_set_value_sync failed: %s", nerr->message);
|
||||||
|
nih_free(nerr);
|
||||||
|
WARN("Error setting cgroup %s:%s limit type %s", controller,
|
||||||
|
d->cgroup_path, cg->subsystem);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
ERROR("call to cgmanager_set_value_sync failed: %s", nerr->message);
|
ERROR("call to cgmanager_set_value_sync failed: %s", nerr->message);
|
||||||
nih_free(nerr);
|
nih_free(nerr);
|
||||||
ERROR("Error setting cgroup %s:%s limit type %s", controller,
|
ERROR("Error setting cgroup %s:%s limit type %s", controller,
|
||||||
|
Loading…
Reference in New Issue
Block a user