Does io_uring though have to deal with BLK_QC_T_NONE at all? Or are you
saying that it should never receive that result?
That's one of the things I'm not clear about.
BLK_QC_T_* are block cookies, they are only valid in the block layer.
Only the poll handler called should have to deal with them, inside
their f_op->iopoll() handler. It's simply passed from the queue to
the poll side.
So no, io_uring shouldn't have to deal with them at all.
The problem, as I see it, is if the block layer returns BLK_QC_T_NONE
and the IO was actually queued and requires polling to be found. We'd
end up with IO timeouts for handling those requests, and that's not a
good thing...
I see requests in io_do_iopoll() on poll_list with req->res == -EAGAIN,
I think because the completion happened after an issued request was
added to poll_list in io_iopoll_req_issued().
How should we deal with such a request, reissue unconditionally or
something else?
--bijan