chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
core: make sure we always write changed cgroup attributes to the cgroupfs
[elogind.git]
/
src
/
core
/
dbus-cgroup.c
diff --git
a/src/core/dbus-cgroup.c
b/src/core/dbus-cgroup.c
index 775825bee912edd6bef66b878c1e52e907313b85..5b1c4e37c8134a2217911a6cd5a88a3600ac9e05 100644
(file)
--- a/
src/core/dbus-cgroup.c
+++ b/
src/core/dbus-cgroup.c
@@
-173,6
+173,7
@@
int bus_cgroup_set_property(
if (mode != UNIT_CHECK) {
c->cpu_accounting = b;
if (mode != UNIT_CHECK) {
c->cpu_accounting = b;
+ u->cgroup_realized_mask &= ~CGROUP_CPUACCT;
unit_write_drop_in_private(u, mode, name, b ? "CPUAccounting=yes" : "CPUAccounting=no");
}
unit_write_drop_in_private(u, mode, name, b ? "CPUAccounting=yes" : "CPUAccounting=no");
}
@@
-192,6
+193,7
@@
int bus_cgroup_set_property(
if (mode != UNIT_CHECK) {
c->cpu_shares = ul;
if (mode != UNIT_CHECK) {
c->cpu_shares = ul;
+ u->cgroup_realized_mask &= ~CGROUP_CPU;
unit_write_drop_in_private_format(u, mode, name, "CPUShares=%lu", ul);
}
unit_write_drop_in_private_format(u, mode, name, "CPUShares=%lu", ul);
}
@@
-206,6
+208,7
@@
int bus_cgroup_set_property(
if (mode != UNIT_CHECK) {
c->blockio_accounting = b;
if (mode != UNIT_CHECK) {
c->blockio_accounting = b;
+ u->cgroup_realized_mask &= ~CGROUP_BLKIO;
unit_write_drop_in_private(u, mode, name, b ? "BlockIOAccounting=yes" : "BlockIOAccounting=no");
}
unit_write_drop_in_private(u, mode, name, b ? "BlockIOAccounting=yes" : "BlockIOAccounting=no");
}
@@
-225,6
+228,7
@@
int bus_cgroup_set_property(
if (mode != UNIT_CHECK) {
c->blockio_weight = ul;
if (mode != UNIT_CHECK) {
c->blockio_weight = ul;
+ u->cgroup_realized_mask &= ~CGROUP_BLKIO;
unit_write_drop_in_private_format(u, mode, name, "BlockIOWeight=%lu", ul);
}
unit_write_drop_in_private_format(u, mode, name, "BlockIOWeight=%lu", ul);
}
@@
-294,6
+298,8
@@
int bus_cgroup_set_property(
cgroup_context_free_blockio_device_bandwidth(c, a);
}
cgroup_context_free_blockio_device_bandwidth(c, a);
}
+ u->cgroup_realized_mask &= ~CGROUP_BLKIO;
+
f = open_memstream(&buf, &size);
if (!f)
return -ENOMEM;
f = open_memstream(&buf, &size);
if (!f)
return -ENOMEM;
@@
-375,6
+381,8
@@
int bus_cgroup_set_property(
cgroup_context_free_blockio_device_weight(c, c->blockio_device_weights);
}
cgroup_context_free_blockio_device_weight(c, c->blockio_device_weights);
}
+ u->cgroup_realized_mask &= ~CGROUP_BLKIO;
+
f = open_memstream(&buf, &size);
if (!f)
return -ENOMEM;
f = open_memstream(&buf, &size);
if (!f)
return -ENOMEM;
@@
-398,6
+406,7
@@
int bus_cgroup_set_property(
if (mode != UNIT_CHECK) {
c->memory_accounting = b;
if (mode != UNIT_CHECK) {
c->memory_accounting = b;
+ u->cgroup_realized_mask &= ~CGROUP_MEMORY;
unit_write_drop_in_private(u, mode, name, b ? "MemoryAccounting=yes" : "MemoryAccounting=no");
}
unit_write_drop_in_private(u, mode, name, b ? "MemoryAccounting=yes" : "MemoryAccounting=no");
}
@@
-412,6
+421,7
@@
int bus_cgroup_set_property(
if (mode != UNIT_CHECK) {
c->memory_limit = limit;
if (mode != UNIT_CHECK) {
c->memory_limit = limit;
+ u->cgroup_realized_mask &= ~CGROUP_MEMORY;
unit_write_drop_in_private_format(u, mode, name, "%s=%" PRIu64, name, limit);
}
unit_write_drop_in_private_format(u, mode, name, "%s=%" PRIu64, name, limit);
}
@@
-433,6
+443,7
@@
int bus_cgroup_set_property(
char *buf;
c->device_policy = p;
char *buf;
c->device_policy = p;
+ u->cgroup_realized_mask &= ~CGROUP_DEVICE;
buf = strappenda("DevicePolicy=", policy);
unit_write_drop_in_private(u, mode, name, buf);
buf = strappenda("DevicePolicy=", policy);
unit_write_drop_in_private(u, mode, name, buf);
@@
-511,6
+522,8
@@
int bus_cgroup_set_property(
cgroup_context_free_device_allow(c, c->device_allow);
}
cgroup_context_free_device_allow(c, c->device_allow);
}
+ u->cgroup_realized_mask &= ~CGROUP_DEVICE;
+
f = open_memstream(&buf, &size);
if (!f)
return -ENOMEM;
f = open_memstream(&buf, &size);
if (!f)
return -ENOMEM;