Message ID | 20190610134905.22294-11-mehta.aaru20@gmail.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Add support for io_uring | expand |
On Mon, Jun 10, 2019 at 07:19:03PM +0530, Aarushi Mehta wrote: > +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) { > + qemu_luring_process_completions_and_submit(s); > + return true; > + } Is this logic inverted? We have a completion when cqes != NULL.
On Tue, 2019-06-11 at 10:51 +0100, Stefan Hajnoczi wrote: > On Mon, Jun 10, 2019 at 07:19:03PM +0530, Aarushi Mehta wrote: > > +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) { > > + qemu_luring_process_completions_and_submit(s); > > + return true; > > + } > > Is this logic inverted? We have a completion when cqes != NULL. This indeed looks inverted to me. Best regards, Maxim Levitsky
diff --git a/block/io_uring.c b/block/io_uring.c index 47e027364a..acfaa48151 100644 --- a/block/io_uring.c +++ b/block/io_uring.c @@ -142,6 +142,21 @@ static void qemu_luring_completion_cb(void *opaque) qemu_luring_process_completions_and_submit(s); } +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) { + qemu_luring_process_completions_and_submit(s); + return true; + } + } + + return false; +} + static void ioq_init(LuringQueue *io_q) { QSIMPLEQ_INIT(&io_q->sq_overflow); @@ -294,7 +309,7 @@ void luring_attach_aio_context(LuringState *s, AioContext *new_context) s->aio_context = new_context; s->completion_bh = aio_bh_new(new_context, qemu_luring_completion_bh, s); aio_set_fd_handler(s->aio_context, s->ring.ring_fd, false, - qemu_luring_completion_cb, NULL, NULL, s); + qemu_luring_completion_cb, NULL, qemu_luring_poll_cb, s); } LuringState *luring_init(Error **errp)
Signed-off-by: Aarushi Mehta <mehta.aaru20@gmail.com> --- block/io_uring.c | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-)