On 4/3/22 5:45 AM, Ming Lei wrote: > -EAGAIN still may return after io issue returns, and REQ_F_REISSUE is > set in io_complete_rw_iopoll(), but the req never gets chance to be handled. > io_iopoll_check doesn't handle this situation, and io hang can be caused. > > Current dm io polling may return -EAGAIN after bio submission is > returned, also blk-throttle might trigger this situation too. I don't think this is necessarily safe. Handling REQ_F_ISSUE from within the issue path is fine, as the request hasn't been submitted yet and hence we know that passed in structs are still stable. Once you hit it when polling for it, the io_uring_enter() call to submit requests has potentially already returned, and now we're in a second call where we are polling for requests. If we're doing eg an IORING_OP_READV, the original iovec may no longer be valid and we cannot safely re-import data associated with it. Hence I don't think the patch is safe and we cannot reliably handle this scenario. dm would need to retry internally for this. -- Jens Axboe