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

v1->v2: add patch 4, and fix QSIMPLEQ_SPLIT_AFTER

Paolo Bonzini (5):
  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: drop return code from laio_io_unplug and ioq_submit
  linux-aio: simplify removal of completed iocbs from the list

 block/linux-aio.c    | 99 ++++++++++++++++++++++++----------------------------
 block/raw-aio.h      |  2 +-
 include/qemu/queue.h | 11 ++++++
 3 files changed, 58 insertions(+), 54 deletions(-)

-- 
2.1.0


Reply via email to