summaryrefslogtreecommitdiffstats
path: root/block/io_uring.c
diff options
context:
space:
mode:
Diffstat (limited to 'block/io_uring.c')
-rw-r--r--block/io_uring.c11
1 files changed, 4 insertions, 7 deletions
diff --git a/block/io_uring.c b/block/io_uring.c
index a3142ca989..037af09471 100644
--- a/block/io_uring.c
+++ b/block/io_uring.c
@@ -231,7 +231,7 @@ static int ioq_submit(LuringState *s)
trace_luring_io_uring_submit(s, ret);
/* Prevent infinite loop if submission is refused */
if (ret <= 0) {
- if (ret == -EAGAIN) {
+ if (ret == -EAGAIN || ret == -EINTR) {
continue;
}
break;
@@ -277,13 +277,10 @@ static void qemu_luring_completion_cb(void *opaque)
static bool qemu_luring_poll_cb(void *opaque)
{
LuringState *s = opaque;
- struct io_uring_cqe *cqes;
- if (io_uring_peek_cqe(&s->ring, &cqes) == 0) {
- if (cqes) {
- luring_process_completions_and_submit(s);
- return true;
- }
+ if (io_uring_cq_ready(&s->ring)) {
+ luring_process_completions_and_submit(s);
+ return true;
}
return false;