diff mbox series

io_uring: use io_uring_cq_ready() to check for ready cqes

Message ID 20200519134942.118178-1-sgarzare@redhat.com
State New
Headers show
Series io_uring: use io_uring_cq_ready() to check for ready cqes | expand

Commit Message

Stefano Garzarella May 19, 2020, 1:49 p.m. UTC
In qemu_luring_poll_cb() we are not using the cqe peeked from the
CQ ring. We are using io_uring_peek_cqe() only to see if there
are cqes ready, so we can replace it with io_uring_cq_ready().

Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
---
 block/io_uring.c | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

Comments

Stefan Hajnoczi May 21, 2020, 2:45 p.m. UTC | #1
On Tue, May 19, 2020 at 03:49:42PM +0200, Stefano Garzarella wrote:
> In qemu_luring_poll_cb() we are not using the cqe peeked from the
> CQ ring. We are using io_uring_peek_cqe() only to see if there
> are cqes ready, so we can replace it with io_uring_cq_ready().
> 
> Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
> ---
>  block/io_uring.c | 9 +++------
>  1 file changed, 3 insertions(+), 6 deletions(-)

io_uring_cq_ready() was added in liburing 0.2 and is already used by
fdmon-io_uring.c. It's safe to use here.

I wanted to mention this in case anyone is concerned about dependencies.
liburing is a fast-moving target and everyone should be on liburing 0.5+.

Thanks, applied to my block tree:
https://github.com/stefanha/qemu/commits/block

Stefan
Stefano Garzarella May 21, 2020, 2:57 p.m. UTC | #2
On Thu, May 21, 2020 at 03:45:34PM +0100, Stefan Hajnoczi wrote:
> On Tue, May 19, 2020 at 03:49:42PM +0200, Stefano Garzarella wrote:
> > In qemu_luring_poll_cb() we are not using the cqe peeked from the
> > CQ ring. We are using io_uring_peek_cqe() only to see if there
> > are cqes ready, so we can replace it with io_uring_cq_ready().
> > 
> > Signed-off-by: Stefano Garzarella <sgarzare@redhat.com>
> > ---
> >  block/io_uring.c | 9 +++------
> >  1 file changed, 3 insertions(+), 6 deletions(-)
> 
> io_uring_cq_ready() was added in liburing 0.2 and is already used by
> fdmon-io_uring.c. It's safe to use here.
> 
> I wanted to mention this in case anyone is concerned about dependencies.
> liburing is a fast-moving target and everyone should be on liburing 0.5+.

Yeah, thanks for doing that. I did this check, but I forgot to write it down...

> 
> Thanks, applied to my block tree:
> https://github.com/stefanha/qemu/commits/block

Thanks,
Stefano
diff mbox series

Patch

diff --git a/block/io_uring.c b/block/io_uring.c
index a3142ca989..bdf3dec3a1 100644
--- a/block/io_uring.c
+++ b/block/io_uring.c
@@ -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;