From 2dbc45aea747f25cc1c3848fded2ec0062f96bcf Mon Sep 17 00:00:00 2001 From: Kai Krakow Date: Sat, 17 Aug 2019 02:33:43 +0200 Subject: [PATCH] cgroup: Also set io.bfq.weight Current kernels with BFQ scheduler do not yet set their IO weight through "io.weight" but through "io.bfq.weight" (using a slightly different interface supporting only default weights, not per-device weights). This commit enables "IOWeight=" to just to that. This patch may be dropped at some time later. Github-Link: https://github.com/systemd/systemd/issues/7057 Signed-off-by: Kai Krakow --- NEWS | 3 +++ src/core/cgroup.c | 5 +++++ 2 files changed, 8 insertions(+) diff --git a/NEWS b/NEWS index df303d329e9..f6cf064281f 100644 --- a/NEWS +++ b/NEWS @@ -429,6 +429,9 @@ CHANGES WITH 243 in spe: option that permits selecting the timout how long to wait for a device with an encryption key before asking for the password. + * IOWeight= has learnt to properly set the IO weight when using the + BFQ scheduler officially found in kernels 5.0+. + Contributions from: Aaron Barany, Adrian Bunk, Alan Jenkins, Andrej Valek, Anita Zhang, Arian van Putten, Balint Reczey, Bastien Nocera, Ben Boeckel, Benjamin Robin, camoz, Chen Qi, Chris Chiu, Chris Down, diff --git a/src/core/cgroup.c b/src/core/cgroup.c index 6e0afa4bca3..60a77993616 100644 --- a/src/core/cgroup.c +++ b/src/core/cgroup.c @@ -1063,6 +1063,11 @@ static void cgroup_context_apply( xsprintf(buf, "default %" PRIu64 "\n", weight); (void) set_attribute_and_warn(u, "io", "io.weight", buf); + /* FIXME: drop this when distro kernels properly support BFQ through "io.weight" + * See also: https://github.com/systemd/systemd/pull/13335 */ + xsprintf(buf, "%" PRIu64 "\n", weight); + (void) set_attribute_and_warn(u, "io", "io.bfq.weight", buf); + if (has_io) { CGroupIODeviceLatency *latency; CGroupIODeviceLimit *limit;