Depends on Stefan's latest coroutine patches. This series makes qcow and qcow2
take advantage of the new coroutine infrastructure. Both formats used
synchronous operations for accessing their metadata and blocked the guest CPU
during that time. With coroutines, the I/O will happen asynchronously in the
background and the CPU won't be blocked any more.

Kevin Wolf (10):
  block: Add bdrv_co_readv/writev
  block: Emulate AIO functions with bdrv_co_readv/writev
  block: Add bdrv_co_readv/writev emulation
  coroutines: Locks
  qcow2: Use coroutines
  qcow: Use coroutines
  async: Remove AsyncContext
  coroutines: Use one global bottom half for CoQueue
  posix-aio-compat: Allow read after EOF
  block: Use bdrv_co_* instead of synchronous versions in coroutines

 Makefile.objs         |    4 +-
 async.c               |   98 ++-----------------
 block.c               |  271 ++++++++++++++++++++++++++++++++++++++++++++++--
 block.h               |    5 +
 block/qcow.c          |  180 +++++++++++---------------------
 block/qcow2-cluster.c |   26 ++---
 block/qcow2.c         |  240 ++++++++++++++++----------------------------
 block/qcow2.h         |    5 +-
 block/qed-table.c     |   14 ---
 block/qed.c           |    4 -
 block_int.h           |    6 +
 linux-aio.c           |   43 +-------
 posix-aio-compat.c    |   30 ++++--
 qemu-common.h         |    4 -
 qemu-coroutine-int.h  |    1 +
 qemu-coroutine-lock.c |  117 +++++++++++++++++++++
 qemu-coroutine.h      |   64 ++++++++++++
 trace-events          |   11 ++
 18 files changed, 659 insertions(+), 464 deletions(-)
 create mode 100644 qemu-coroutine-lock.c

-- 
1.7.6


Reply via email to