From: Lennart Poettering Date: Wed, 24 Nov 2021 14:38:10 +0000 (+0100) Subject: ioprio: normalize io priority values in configuration X-Git-Tag: v250-rc1~163^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=ba7772fee445dd88438fb84477648a67821843d0;p=thirdparty%2Fsystemd.git ioprio: normalize io priority values in configuration Let's always say IOPRIO_CLASS_BE when IOPRIO_CALSS_NONE is set. --- diff --git a/src/basic/ioprio-util.h b/src/basic/ioprio-util.h index 0d3f70a220d..b8c9b7dd59f 100644 --- a/src/basic/ioprio-util.h +++ b/src/basic/ioprio-util.h @@ -20,3 +20,8 @@ int ioprio_parse_priority(const char *s, int *ret); /* IOPRIO_CLASS_NONE with any prio value is another way to say IOPRIO_CLASS_BE with level 4. Encode that in a * proper macro. */ #define IOPRIO_DEFAULT_CLASS_AND_PRIO ioprio_prio_value(IOPRIO_CLASS_BE, 4) + +static inline int ioprio_normalize(int v) { + /* Converts IOPRIO_CLASS_NONE to what it actually means */ + return ioprio_prio_class(v) == IOPRIO_CLASS_NONE ? IOPRIO_DEFAULT_CLASS_AND_PRIO : v; +} diff --git a/src/core/dbus-execute.c b/src/core/dbus-execute.c index c8323d84baa..5c499e5d060 100644 --- a/src/core/dbus-execute.c +++ b/src/core/dbus-execute.c @@ -2811,7 +2811,7 @@ int bus_exec_context_set_transient_property( if (r < 0) return r; - c->ioprio = ioprio_prio_value(q, ioprio_prio_data(c->ioprio)); + c->ioprio = ioprio_normalize(ioprio_prio_value(q, ioprio_prio_data(c->ioprio))); c->ioprio_set = true; unit_write_settingf(u, flags, name, "IOSchedulingClass=%s", s); @@ -2830,7 +2830,7 @@ int bus_exec_context_set_transient_property( return sd_bus_error_setf(error, SD_BUS_ERROR_INVALID_ARGS, "Invalid IO scheduling priority: %i", p); if (!UNIT_WRITE_FLAGS_NOOP(flags)) { - c->ioprio = ioprio_prio_value(ioprio_prio_class(c->ioprio), p); + c->ioprio = ioprio_normalize(ioprio_prio_value(ioprio_prio_class(c->ioprio), p)); c->ioprio_set = true; unit_write_settingf(u, flags, name, "IOSchedulingPriority=%i", p); diff --git a/src/core/load-fragment.c b/src/core/load-fragment.c index 71434a4bee9..92a52819e27 100644 --- a/src/core/load-fragment.c +++ b/src/core/load-fragment.c @@ -1427,7 +1427,7 @@ int config_parse_exec_io_class(const char *unit, return 0; } - c->ioprio = ioprio_prio_value(x, ioprio_prio_data(c->ioprio)); + c->ioprio = ioprio_normalize(ioprio_prio_value(x, ioprio_prio_data(c->ioprio))); c->ioprio_set = true; return 0; @@ -1464,7 +1464,7 @@ int config_parse_exec_io_priority(const char *unit, return 0; } - c->ioprio = ioprio_prio_value(ioprio_prio_class(c->ioprio), i); + c->ioprio = ioprio_normalize(ioprio_prio_value(ioprio_prio_class(c->ioprio), i)); c->ioprio_set = true; return 0;