After io_put_req_find_next() was patched, handlers no more return next work, but enqueue them through io_queue_async_work() (mostly by io_put_work() -> io_put_req()). The patchset fixes that. Patches 1-2 clean up and removes all futile attempts to get nxt from the opcode handlers. The 3rd one moves all this propagation idea into work->put_work(). And the rest ones are small clean up on top. Pavel Begunkov (5): io_uring: remove @nxt from the handlers io_uring/io-wq: pass *work instead of **workptr io_uring/io-wq: allow put_work return next work io_uring: remove extra nxt check after punt io_uring: remove io_prep_next_work() fs/io-wq.c | 28 ++--- fs/io-wq.h | 4 +- fs/io_uring.c | 334 ++++++++++++++++++++------------------------------ 3 files changed, 146 insertions(+), 220 deletions(-) -- 2.24.0