We still have a case where resource starvation can cause us to block. I've been running with a debug patch to detect cases where an io_uring task can go uninterruptibly to sleep, and this is the main one. This patchset provides a way for io_uring to have a holding area for requests that should get retried, and a way to signal to the block stack that we should be attempting to alloate requests with REQ_NOWAIT. When we finish the block plug, we re-issue any requests that failed to get allocated. -- Jens Axboe