]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
pid1: properly encode infinity when writing CPUQuota snippet (#6141)
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Sun, 18 Jun 2017 09:18:41 +0000 (05:18 -0400)
committerLennart Poettering <lennart@poettering.net>
Sun, 18 Jun 2017 09:18:41 +0000 (11:18 +0200)
We would write
  [Slice]
  CPUQuota=1844674407370955%
which is (numerically) correct, but it seems better to just write
  [Slice]
  CPUQuota=
which is interpreted as USEC_INFINITY by the parser in config_parse_cpu_quota().

Fixes #5965.

src/core/dbus-cgroup.c

index c4067a95bfe1b9ceec614d687326d54b3d80a964..12d3ca076bdee0dac6ce014acca64614d4c689f3 100644 (file)
@@ -407,7 +407,15 @@ int bus_cgroup_set_property(
                 if (mode != UNIT_CHECK) {
                         c->cpu_quota_per_sec_usec = u64;
                         unit_invalidate_cgroup(u, CGROUP_MASK_CPU);
-                        unit_write_drop_in_private_format(u, mode, "CPUQuota", "CPUQuota=%0.f%%", (double) (c->cpu_quota_per_sec_usec / 10000));
+                        if (c->cpu_quota_per_sec_usec == USEC_INFINITY)
+                                unit_write_drop_in_private_format(u, mode, "CPUQuota",
+                                                                  "CPUQuota=");
+                        else
+                                /* config_parse_cpu_quota() requires an integer, so
+                                 * truncating division is used on purpose here. */
+                                unit_write_drop_in_private_format(u, mode, "CPUQuota",
+                                                                  "CPUQuota=%0.f%%",
+                                                                  (double) (c->cpu_quota_per_sec_usec / 10000));
                 }
 
                 return 1;