summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/core/exec-invoke.c7
1 files changed, 7 insertions, 0 deletions
diff --git a/src/core/exec-invoke.c b/src/core/exec-invoke.c
index a867480300..98d8b0c7d1 100644
--- a/src/core/exec-invoke.c
+++ b/src/core/exec-invoke.c
@@ -4450,6 +4450,13 @@ int exec_invoke(
}
}
+ /*
+ * Set nice value _after_ the call to sched_setattr() because struct sched_attr includes sched_nice
+ * which we do not set, thus it will clobber any previously set nice value. Scheduling policy might
+ * be reasonably set together with nice value e.g. in case of SCHED_BATCH (see sched(7)).
+ * It would be ideal to set both with the same call, but we cannot easily do so because of all the
+ * extra logic in setpriority_closest().
+ */
if (context->nice_set) {
r = setpriority_closest(context->nice);
if (r < 0) {