From 3051f1871ea2d9a36b423207221e461cc27e577c Mon Sep 17 00:00:00 2001 From: Lennart Poettering Date: Fri, 25 Apr 2014 13:26:37 +0200 Subject: [PATCH] core: make sure we always write changed cgroup attributes to the cgroupfs --- src/core/dbus-cgroup.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/src/core/dbus-cgroup.c b/src/core/dbus-cgroup.c index 775825bee..5b1c4e37c 100644 --- 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; + u->cgroup_realized_mask &= ~CGROUP_CPUACCT; 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; + u->cgroup_realized_mask &= ~CGROUP_CPU; 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; + u->cgroup_realized_mask &= ~CGROUP_BLKIO; 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; + u->cgroup_realized_mask &= ~CGROUP_BLKIO; 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); } + u->cgroup_realized_mask &= ~CGROUP_BLKIO; + 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); } + u->cgroup_realized_mask &= ~CGROUP_BLKIO; + 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; + u->cgroup_realized_mask &= ~CGROUP_MEMORY; 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; + u->cgroup_realized_mask &= ~CGROUP_MEMORY; 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; + u->cgroup_realized_mask &= ~CGROUP_DEVICE; 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); } + u->cgroup_realized_mask &= ~CGROUP_DEVICE; + f = open_memstream(&buf, &size); if (!f) return -ENOMEM; -- 2.30.2