mirror of
https://github.com/torvalds/linux.git
synced 2024-11-22 20:22:09 +00:00
io_uring: don't try io-wq polling if not supported
If an opcode doesn't support polling, just let it be executed synchronously in iowq, otherwise it will do a nonblock attempt just to fail in io_arm_poll_handler() and return back to blocking execution. Signed-off-by: Pavel Begunkov <asml.silence@gmail.com> Link: https://lore.kernel.org/r/6401256db01b88f448f15fcd241439cb76f5b940.1634987320.git.asml.silence@gmail.com Reviewed-by: Hao Xu <haoxu@linux.alibaba.com> Signed-off-by: Jens Axboe <axboe@kernel.dk>
This commit is contained in:
parent
658d0a4016
commit
afb7f56fc6
@ -6741,10 +6741,14 @@ static void io_wq_submit_work(struct io_wq_work *work)
|
||||
}
|
||||
|
||||
if (req->flags & REQ_F_FORCE_ASYNC) {
|
||||
needs_poll = req->file && file_can_poll(req->file);
|
||||
if (needs_poll)
|
||||
const struct io_op_def *def = &io_op_defs[req->opcode];
|
||||
bool opcode_poll = def->pollin || def->pollout;
|
||||
|
||||
if (opcode_poll && file_can_poll(req->file)) {
|
||||
needs_poll = true;
|
||||
issue_flags |= IO_URING_F_NONBLOCK;
|
||||
}
|
||||
}
|
||||
|
||||
do {
|
||||
ret = io_issue_sqe(req, issue_flags);
|
||||
|
Loading…
Reference in New Issue
Block a user