On 10/25/20 8:26 AM, Pavel Begunkov wrote: > io_poll_double_wake() is called for both: poll requests and as apoll > (internal poll to make rw and other requests), hence when it calls > __io_async_wake() it should use a right callback depending on the > current poll type. Can we do something like this instead? Untested... diff --git a/fs/io_uring.c b/fs/io_uring.c index b42dfa0243bf..a0147c0e5320 100644 --- a/fs/io_uring.c +++ b/fs/io_uring.c @@ -4978,7 +4978,7 @@ static int io_poll_double_wake(struct wait_queue_entry *wait, unsigned mode, wait->private = NULL; spin_unlock(&poll->head->lock); if (!done) - __io_async_wake(req, poll, mask, io_poll_task_func); + poll->wait.func(wait, mode, sync, key); } refcount_dec(&req->refs); return 1; -- Jens Axboe