]> www.infradead.org Git - users/jedix/linux-maple.git/commit
io_uring: return -EAGAIN to continue multishot
authorPavel Begunkov <asml.silence@gmail.com>
Sat, 8 Mar 2025 17:19:32 +0000 (17:19 +0000)
committerJens Axboe <axboe@kernel.dk>
Mon, 10 Mar 2025 13:14:18 +0000 (07:14 -0600)
commit7a9dcb05f5501b07a2ef7d0ef743f4f17e9f3055
treeda40e494297268af4556eb45d62744bd89988a43
parent0396ad3766ad4879b35c5401cee41bba64fe75d2
io_uring: return -EAGAIN to continue multishot

Multishot errors can be mapped 1:1 to normal errors, but there are not
identical. It leads to a peculiar situation where all multishot requests
has to check in what context they're run and return different codes.

Unify them starting with EAGAIN / IOU_ISSUE_SKIP_COMPLETE(EIOCBQUEUED)
pair, which mean that core io_uring still owns the request and it should
be retried. In case of multishot it's naturally just continues to poll,
otherwise it might poll, use iowq or do any other kind of allowed
blocking. Introduce IOU_RETRY aliased to -EAGAIN for that.

Apart from obvious upsides, multishot can now also check for misuse of
IOU_ISSUE_SKIP_COMPLETE.

Signed-off-by: Pavel Begunkov <asml.silence@gmail.com>
Link: https://lore.kernel.org/r/da117b79ce72ecc3ab488c744e29fae9ba54e23b.1741453534.git.asml.silence@gmail.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
io_uring/io_uring.c
io_uring/io_uring.h
io_uring/net.c
io_uring/poll.c
io_uring/rw.c