MINOR: task: do not use __task_unlink_rq() from process_runnable_tasks()

As indicated in previous commit, this function tries to guess which tree
the task is in to figure what counters to update, while we already have
that info in the caller. Let's just pick the relevant parts to place them
in the caller.
This commit is contained in:
Willy Tarreau 2021-02-25 07:14:58 +01:00
parent e7923c1d22
commit 2b363ac092

View File

@ -701,14 +701,18 @@ void process_runnable_tasks()
if (likely(!grq || (lrq && (int)(lrq->key - grq->key) <= 0))) { if (likely(!grq || (lrq && (int)(lrq->key - grq->key) <= 0))) {
t = eb32sc_entry(lrq, struct task, rq); t = eb32sc_entry(lrq, struct task, rq);
lrq = eb32sc_next(lrq, tid_bit); lrq = eb32sc_next(lrq, tid_bit);
__task_unlink_rq(t); _HA_ATOMIC_SUB(&sched->rq_total, 1);
eb32sc_delete(&t->rq);
lpicked++; lpicked++;
} }
#ifdef USE_THREAD #ifdef USE_THREAD
else { else {
t = eb32sc_entry(grq, struct task, rq); t = eb32sc_entry(grq, struct task, rq);
grq = eb32sc_next(grq, tid_bit); grq = eb32sc_next(grq, tid_bit);
__task_unlink_rq(t); grq_total--;
_HA_ATOMIC_AND(&t->state, ~TASK_GLOBAL);
eb32sc_delete(&t->rq);
if (unlikely(!grq)) { if (unlikely(!grq)) {
grq = eb32sc_first(&rqueue, tid_bit); grq = eb32sc_first(&rqueue, tid_bit);
if (!grq) { if (!grq) {
@ -719,6 +723,8 @@ void process_runnable_tasks()
gpicked++; gpicked++;
} }
#endif #endif
if (t->nice)
_HA_ATOMIC_SUB(&niced_tasks, 1);
/* Add it to the local task list */ /* Add it to the local task list */
LIST_ADDQ(&tt->tasklets[TL_NORMAL], &((struct tasklet *)t)->list); LIST_ADDQ(&tt->tasklets[TL_NORMAL], &((struct tasklet *)t)->list);