This should be final for 5.5-rc3, I've run this through all the testing and we're solid. The main changes since v2 are: - Add Pavel's patch for the wait-and-submit issue - Drop the ->free_req() addition. We can do this without adding extra io_async_ctx storage. - Fixed a missing check for CONFIG_NET I think this improves it all around, and it makes me more comfortable with the persistent state. There's three patches that deal with poll add/remove, cancel async, and timeout remove. Those are the three commands we still missed that need to retain state across a deferral, and then a patch that stuffs sqe->opcode in a io_kiocb hole, and ensures we assign ->opcode and ->user_data when we retrieve the SQE. Lastly, a patch that adds a warning about new commands that don't have a prep handler. We need that for ANY command that reads sqe fields, which is all of them obviously except NOP. fs/io-wq.c | 2 +- fs/io-wq.h | 8 +- fs/io_uring.c | 703 ++++++++++++++++++++++++++++++++++---------------- 3 files changed, 485 insertions(+), 228 deletions(-) -- Jens Axboe