Skip to content

Commit 68ad209

Browse files
committed
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
2 parents e28ddd0 + e4fdbca commit 68ad209

1 file changed

Lines changed: 4 additions & 7 deletions

File tree

io_uring/io-wq.c

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -947,16 +947,13 @@ static bool io_acct_for_each_worker(struct io_wq_acct *acct,
947947
return ret;
948948
}
949949

950-
static bool io_wq_for_each_worker(struct io_wq *wq,
950+
static void io_wq_for_each_worker(struct io_wq *wq,
951951
bool (*func)(struct io_worker *, void *),
952952
void *data)
953953
{
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;
960957
}
961958

962959
static bool io_wq_worker_wake(struct io_worker *worker, void *data)

0 commit comments

Comments
 (0)