On 26/04/2024 08:21, Joel Colledge wrote: > If the worker thread is not woken due to a bio, then it is not woken at > all. This causes the hung task check to trigger. For instance, when a > delay of 0 is configured, delay_bio() returns without waking the worker, > so this situation occurs. > > Prevent the hung task check from triggering by waking up the newly > minted worker in delay_ctr(). > > Fixes: 70bbeb29fab0 ("dm delay: for short delays, use kthread instead of timers and wq") > Signed-off-by: Joel Colledge <joel.colledge@xxxxxxxxxx> > --- > drivers/md/dm-delay.c | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/drivers/md/dm-delay.c b/drivers/md/dm-delay.c > index 5eabdb06c649..003512bb5fea 100644 > --- a/drivers/md/dm-delay.c > +++ b/drivers/md/dm-delay.c > @@ -274,6 +274,7 @@ static int delay_ctr(struct dm_target *ti, unsigned int argc, char **argv) > dc->worker = NULL; > goto bad; > } > + wake_up_process(dc->worker); > } else { > timer_setup(&dc->delay_timer, handle_delayed_timer, 0); > INIT_WORK(&dc->flush_expired_bios, flush_expired_bios); Is this an issue for delay > 0 too somehow? Indeed if we don't have a delay the process will never be woken up, but in that case, why create the worker in the first place? You're missing lkml as recipient btw. Kind Regards, Christian