Re: io_uring: submission error handling

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 24.04.19 00:07, Jens Axboe wrote:
> On 4/23/19 2:31 PM, Jens Axboe wrote:
>>> 1. An error for a submission should be returned as completion for that
>>> submission.  Please don't break my main event loop with strange error
>>> codes just because a single operation is broken/not supported/...
>>
>> So that's the case I was referring to above. We can just make that change,
>> there's absolutely no reason to have errors passed back through a different
>> channel.
> 
> Thinking about this a bit more, and I think the current approach is the
> best one. The issue is that only submission side events tied to an sqe
> can return an cqe, the rest have to be returned through the system call
> value. So I think it's cleaner to keep it as-is, honestly.

Not sure we're talking about the same.

I'm talking about the errors returned by io_submit_sqe: io_submit_sqes
(called by the SQ thread) calls io_cqring_add_event if there was an
error, but io_ring_submit (called by io_uring_enter) doesn't: instead,
if there were successfully submitted entries before, it will just return
those (and "undo" the current SQE), otherwise it will return the error,
which will then be returned by io_uring_enter.

But if I get an error from io_uring_enter I have no idea whether it was
some generic error (say EINVAL for broken flags or EBADF for a
non-io-uring filedescriptor) or an error related to a single submission.

I think io_ring_submit should call io_cqring_add_event on errors too
(like io_submit_sqes), and not stop handling submissions (and never
return an error).

Maybe io_cqring_add_event could then even be moved to io_submit_sqe and
just return whether the job is already done or not (io_submit_sqes
returns the new "inflight" jobs, and io_ring_submit the total number of
submitted jobs).

cheers,
Stefan



[Index of Archives]     [Linux Ext4 Filesystem]     [Union Filesystem]     [Filesystem Testing]     [Ceph Users]     [Ecryptfs]     [AutoFS]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux Cachefs]     [Reiser Filesystem]     [Linux RAID]     [Samba]     [Device Mapper]     [CEPH Development]

  Powered by Linux