Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'io_uring-6.19-20260109' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux

Pull io_uring fixes from Jens Axboe:
"A single fix for a regression introduced in 6.15, where a failure to
wake up idle io-wq workers at ring exit will wait for the timeout to
expire.

This isn't normally noticeable, as the exit is async.

But if a parent task created a thread that sets up a ring and uses
requests that cause io-wq threads to be created, and the parent task
then waits for the thread to exit, then it can take 5 seconds for that
pthread_join() to succeed as the child thread is waiting for its
children to exit.

On top of that, just a basic cleanup as well"

* tag 'io_uring-6.19-20260109' of git://git.kernel.org/pub/scm/linux/kernel/git/axboe/linux:
io_uring/io-wq: remove io_wq_for_each_worker() return value
io_uring/io-wq: fix incorrect io_wq_for_each_worker() termination logic

+4 -7
+4 -7
io_uring/io-wq.c
··· 947 947 return ret; 948 948 } 949 949 950 - static bool io_wq_for_each_worker(struct io_wq *wq, 950 + static void io_wq_for_each_worker(struct io_wq *wq, 951 951 bool (*func)(struct io_worker *, void *), 952 952 void *data) 953 953 { 954 - for (int i = 0; i < IO_WQ_ACCT_NR; i++) { 955 - if (!io_acct_for_each_worker(&wq->acct[i], func, data)) 956 - return false; 957 - } 958 - 959 - return true; 954 + for (int i = 0; i < IO_WQ_ACCT_NR; i++) 955 + if (io_acct_for_each_worker(&wq->acct[i], func, data)) 956 + break; 960 957 } 961 958 962 959 static bool io_wq_worker_wake(struct io_worker *worker, void *data)