commit: db4a6cec31324bfa2dae2afaa009e471659a53cd
Author: Florian Schmaus <flow <AT> gentoo <DOT> org>
AuthorDate: Sat Dec 13 09:16:07 2025 +0000
Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Dec 13 10:46:27 2025 +0000
URL: https://gitweb.gentoo.org/proj/steve.git/commit/?id=db4a6cec
Move the per-process limit check up in the validation chain
Signed-off-by: Florian Schmaus <flow <AT> gentoo.org>
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
steve.cxx | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/steve.cxx b/steve.cxx
index 37b3258..29f58e4 100644
--- a/steve.cxx
+++ b/steve.cxx
@@ -172,6 +172,9 @@ static steve_token_availability
steve_can_give_token(steve_state *state, uint64_
/* if there is a token reserved, we give it immediately (even if load
is exceeded now) */
if (state->processes[pid].token_reserved)
return steve_token_availability::available;
+ /* if the per-process limit is reached, do not provide a token */
+ if (state->per_process_limit > 0 && state->processes[pid].tokens_held
>= state->per_process_limit)
+ return steve_token_availability::per_process_limit_exceeded;
/* if we have been throttled due to load, wait for it to time out */
if (state->recheck_triggered) {
assert(state->tokens > 0);
@@ -180,8 +183,6 @@ static steve_token_availability
steve_can_give_token(steve_state *state, uint64_
if (state->tokens <= 0)
return steve_token_availability::no_tokens;
- if (state->per_process_limit > 0 && state->processes[pid].tokens_held
>= state->per_process_limit)
- return steve_token_availability::per_process_limit_exceeded;
if (state->max_load_avg > 0) {
if (state->jobs < state->min_jobs + state->tokens)
return steve_token_availability::available;