On 26.01.24 22:39, Jens Axboe wrote: > static void sched_update_worker(struct task_struct *tsk) > { > - if (tsk->flags & (PF_WQ_WORKER | PF_IO_WORKER)) { > + if (tsk->flags & (PF_WQ_WORKER | PF_IO_WORKER | PF_BLOCK_TS)) { > + if (tsk->flags & PF_BLOCK_TS) > + blk_plug_invalidate_ts(tsk); > if (tsk->flags & PF_WQ_WORKER) > wq_worker_running(tsk); > - else > + else if (tsk->flags & PF_IO_WORKER) > io_wq_worker_running(tsk); > } > } Why the nested if? Isn't that more readable: diff --git a/kernel/sched/core.c b/kernel/sched/core.c index 9116bcc90346..74beb0126da6 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -6787,12 +6787,12 @@ static inline void sched_submit_work(struct task_struct *tsk) static void sched_update_worker(struct task_struct *tsk) { - if (tsk->flags & (PF_WQ_WORKER | PF_IO_WORKER)) { - if (tsk->flags & PF_WQ_WORKER) - wq_worker_running(tsk); - else - io_wq_worker_running(tsk); - } + if (tsk->flags & PF_BLOCK_TS) + blk_plug_invalidate_ts(tsk); + if (tsk->flags & PF_WQ_WORKER) + wq_worker_running(tsk); + else if (tsk->flags & PF_IO_WORKER) + io_wq_worker_running(tsk); } static __always_inline void __schedule_loop(unsigned int sched_mode)