This series rewrites the io_submit code to avoid having to synchronize the iocbs in two places (qemu_laiocb and LaioQueue). Instead, the queue of pending I/O requests is kept in a list.
This fixes the problems with io_submit doing partial submissions or failing with EAGAIN, without complicating the code. The bug is shown by "qemu-img bench -n -t none -s 65536 -d 1024 -c 100000" pretty much instantly. Paolo Paolo Bonzini (4): linux-aio: queue requests that cannot be submitted linux-aio: track whether the queue is blocked linux-aio: rename LaioQueue idx field to "n" linux-aio: simplify removal of completed iocbs from the list block/linux-aio.c | 86 +++++++++++++++++++++++++--------------------------- include/qemu/queue.h | 11 +++++++ 2 files changed, 53 insertions(+), 44 deletions(-) -- 2.1.0