On Tue, Aug 23, 2022 at 09:47:39AM -0600, Jens Axboe wrote:
On 8/23/22 9:10 AM, Kanchan Joshi wrote:
If ->uring_cmd returned an error value different from -EAGAIN or
-EIOCBQUEUED, it gets overridden with IOU_OK. This invites trouble
as caller (io_uring core code) handles IOU_OK differently than other
error codes.
Fix this by returning the actual error code.
Not sure if this is strictly needed, as the cqe error is set just
fine. But I guess some places also check return value of the issue
path.
So I was testing iopoll support and ran into this issue - submission
failed (expected one), control came back to this point, error code
got converted to IOU_OK, and it started polling endlessly for a command
that never got submitted.
io_issue_sqe continued to invoke io_iopoll_req_issued() rather than
bailing out.