]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
ioprio-util: add macro for default ioprio settings
authorLennart Poettering <lennart@poettering.net>
Wed, 24 Nov 2021 14:30:22 +0000 (15:30 +0100)
committerLennart Poettering <lennart@poettering.net>
Wed, 24 Nov 2021 15:12:15 +0000 (16:12 +0100)
IOPRIO_CLASS_NONE with any priority value actually is an alias for
IOPRIO_CLASS_BE with priority value 4 – which is the default ioprio for
all processes.

We got this right at one place, but wrong at three others (where we
assumed the default value was 0, not 4). Let's add a
macro that encodes this properly, and use it everywhere.

src/basic/ioprio-util.h
src/core/execute.c
src/core/load-fragment.c

index ffb3e9c8901f0018f5f1513242d964997cd61829..0d3f70a220d50df8445f5ebd8f096ca22e2ca3c0 100644 (file)
@@ -16,3 +16,7 @@ static inline bool ioprio_priority_is_valid(int i) {
 }
 
 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)
index e578bace6ff4d01328b674f55f8f41cc60746bf7..c30e15f614111b1365c1a0c92087e8a1c4c40370 100644 (file)
@@ -5069,7 +5069,7 @@ void exec_context_init(ExecContext *c) {
         assert(c);
 
         c->umask = 0022;
-        c->ioprio = ioprio_prio_value(IOPRIO_CLASS_BE, 0);
+        c->ioprio = IOPRIO_DEFAULT_CLASS_AND_PRIO;
         c->cpu_sched_policy = SCHED_OTHER;
         c->syslog_priority = LOG_DAEMON|LOG_INFO;
         c->syslog_level_prefix = true;
@@ -6021,7 +6021,7 @@ int exec_context_get_effective_ioprio(const ExecContext *c) {
 
         p = ioprio_get(IOPRIO_WHO_PROCESS, 0);
         if (p < 0)
-                return ioprio_prio_value(IOPRIO_CLASS_BE, 4);
+                return IOPRIO_DEFAULT_CLASS_AND_PRIO;
 
         return p;
 }
index 0e93ddfbc0491516b36cbe56a04b4009b9625131..71434a4bee9d951013d6920e4c6f5d7e8fd4fedf 100644 (file)
@@ -1417,7 +1417,7 @@ int config_parse_exec_io_class(const char *unit,
 
         if (isempty(rvalue)) {
                 c->ioprio_set = false;
-                c->ioprio = ioprio_prio_value(IOPRIO_CLASS_BE, 0);
+                c->ioprio = IOPRIO_DEFAULT_CLASS_AND_PRIO;
                 return 0;
         }
 
@@ -1454,7 +1454,7 @@ int config_parse_exec_io_priority(const char *unit,
 
         if (isempty(rvalue)) {
                 c->ioprio_set = false;
-                c->ioprio = ioprio_prio_value(IOPRIO_CLASS_BE, 0);
+                c->ioprio = IOPRIO_DEFAULT_CLASS_AND_PRIO;
                 return 0;
         }