This patch series eliminates ctx->notifier EventNotifier activity when aio_poll() is in polling mode. There is no need to use the EventNotifier since a polling handler can detect that aio_notify() has been called by monitoring a field in memory instead.
Optimizing out the EventNotifier calls improves null-co random read 4KB iodepth=1 IOPS by 18%. aio_compute_timeout() is now called twice if aio_poll() needs to block, which means an extra qemu_clock_get_ns() call is made when there is an active timer. An alternative would be to set timeout = 0 if ctx->notified is true before blocking, but going around the event loop again could slow things down more. I have not modified docs/spin/aio_notify*.promela because I'm not familiar with the SPIN model checker. Stefan Hajnoczi (3): async: rename event_notifier_dummy_cb/poll() async: always set ctx->notified in aio_notify() aio-posix: keep aio_notify_me disabled during polling util/aio-posix.c | 56 ++++++++++++++++++++++++------------------------ util/async.c | 22 +++++++++---------- 2 files changed, 38 insertions(+), 40 deletions(-) -- 2.26.2