io_uring: optimise success case of __io_queue_sqe
Move the case of successfully issued request by doing that check first. It's not much of a difference, just generates slightly better code for me. Signed-off-by: Pavel Begunkov <asml.silence@gmail.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
Родитель
de968c182b
Коммит
1840038e11
|
@ -6330,15 +6330,7 @@ static void __io_queue_sqe(struct io_kiocb *req)
|
|||
* We async punt it if the file wasn't marked NOWAIT, or if the file
|
||||
* doesn't support non-blocking read/write attempts
|
||||
*/
|
||||
if (ret == -EAGAIN && !(req->flags & REQ_F_NOWAIT)) {
|
||||
if (!io_arm_poll_handler(req)) {
|
||||
/*
|
||||
* Queued up for async execution, worker will release
|
||||
* submit reference when the iocb is actually submitted.
|
||||
*/
|
||||
io_queue_async_work(req);
|
||||
}
|
||||
} else if (likely(!ret)) {
|
||||
if (likely(!ret)) {
|
||||
/* drop submission reference */
|
||||
if (req->flags & REQ_F_COMPLETE_INLINE) {
|
||||
struct io_ring_ctx *ctx = req->ctx;
|
||||
|
@ -6350,6 +6342,14 @@ static void __io_queue_sqe(struct io_kiocb *req)
|
|||
} else {
|
||||
io_put_req(req);
|
||||
}
|
||||
} else if (ret == -EAGAIN && !(req->flags & REQ_F_NOWAIT)) {
|
||||
if (!io_arm_poll_handler(req)) {
|
||||
/*
|
||||
* Queued up for async execution, worker will release
|
||||
* submit reference when the iocb is actually submitted.
|
||||
*/
|
||||
io_queue_async_work(req);
|
||||
}
|
||||
} else {
|
||||
io_req_complete_failed(req, ret);
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче