]> git.proxmox.com Git - mirror_qemu.git/commit - util/fdmon-io_uring.c
aio-posix: support userspace polling of fd monitoring
authorStefan Hajnoczi <stefanha@redhat.com>
Thu, 5 Mar 2020 17:08:05 +0000 (17:08 +0000)
committerStefan Hajnoczi <stefanha@redhat.com>
Mon, 9 Mar 2020 16:41:31 +0000 (16:41 +0000)
commitaa38e19f05c3a5ae64dff84f44e1aa31281a5b14
tree511a1cbddc11aee4e8b4ff22469189136cc125d9
parent73fd282e7b6dd4e4ea1c3bbb3d302c8db51e4ccf
aio-posix: support userspace polling of fd monitoring

Unlike ppoll(2) and epoll(7), Linux io_uring completions can be polled
from userspace.  Previously userspace polling was only allowed when all
AioHandler's had an ->io_poll() callback.  This prevented starvation of
fds by userspace pollable handlers.

Add the FDMonOps->need_wait() callback that enables userspace polling
even when some AioHandlers lack ->io_poll().

For example, it's now possible to do userspace polling when a TCP/IP
socket is monitored thanks to Linux io_uring.

Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
Link: https://lore.kernel.org/r/20200305170806.1313245-7-stefanha@redhat.com
Message-Id: <20200305170806.1313245-7-stefanha@redhat.com>
include/block/aio.h
util/aio-posix.c
util/fdmon-epoll.c
util/fdmon-io_uring.c
util/fdmon-poll.c