From b73c86c6959ba3d89b610e2bbf99e93ed7cbb5f6 Mon Sep 17 00:00:00 2001 From: Ivan Shapovalov Date: Wed, 21 Aug 2024 19:36:08 +0200 Subject: [PATCH] core/exec-invoke: document calling setpriority() after sched_setattr() Fixes: 711a157738b ("core/exec-invoke: call setpriority() after sched_setattr()") --- src/core/exec-invoke.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/core/exec-invoke.c b/src/core/exec-invoke.c index a867480300e..98d8b0c7d11 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) { -- 2.47.3