All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 00/12] block: bdrv_drained_begin/end for transactions on dataplane devices
@ 2015-10-09  5:45 Fam Zheng
  2015-10-09  5:45 ` [Qemu-devel] [PATCH 01/12] aio: Introduce "type" in aio_set_fd_handler and aio_set_event_notifier Fam Zheng
                   ` (11 more replies)
  0 siblings, 12 replies; 22+ messages in thread
From: Fam Zheng @ 2015-10-09  5:45 UTC (permalink / raw)
  To: qemu-devel; +Cc: Kevin Wolf, Paolo Bonzini, qemu-block, Stefan Hajnoczi

External I/O requests mustn't come in while we're in the middle of a
QMP transaction. This series adds bdrv_drained_begin and bdrv_drained_end
around "prepare" and "cleanup" in the transaction actions to make sure that.

Note that "backup" action already starts the block job coroutine in prepare,
and "snapshot" action already creates the snapshot, but both are OK because we
call bdrv_drained_begin first.

The nested event loops also dispatch timers and BHs on the same AioContext. The
existing timers are iscsi, curl, qcow2 and qed. The only one that does I/O is
qed, which is dealt with by a new ".bdrv_drain" callback.


Fam Zheng (12):
  aio: Introduce "type" in aio_set_fd_handler and aio_set_event_notifier
  aio: Save fd client type to AioHandler
  nbd: Mark fd handlers client type as "external"
  dataplane: Mark host notifiers' client type as "external"
  aio: introduce aio_{disable,enable}_clients
  block: Introduce "drained begin/end" API
  block: Add "drained begin/end" for transactional external snapshot
  block: Add "drained begin/end" for transactional backup
  block: Add "drained begin/end" for transactional blockdev-backup
  block: Add "drained begin/end" for internal snapshot
  block: Introduce BlockDriver.bdrv_drain callback
  qed: Implement .bdrv_drain

 aio-posix.c                     |  9 +++++--
 aio-win32.c                     |  8 +++++-
 async.c                         | 45 +++++++++++++++++++++++++++++++-
 block.c                         |  2 ++
 block/curl.c                    | 14 +++++-----
 block/io.c                      | 21 +++++++++++++++
 block/iscsi.c                   |  9 +++----
 block/linux-aio.c               |  5 ++--
 block/nbd-client.c              | 10 ++++---
 block/nfs.c                     | 17 +++++-------
 block/qed.c                     |  7 +++++
 block/sheepdog.c                | 38 ++++++++++++++++++---------
 block/ssh.c                     |  5 ++--
 block/win32-aio.c               |  5 ++--
 blockdev.c                      | 27 ++++++++++++++-----
 hw/block/dataplane/virtio-blk.c |  6 +++--
 hw/scsi/virtio-scsi-dataplane.c | 24 +++++++++++------
 include/block/aio.h             | 36 +++++++++++++++++++++++++
 include/block/block.h           | 19 ++++++++++++++
 include/block/block_int.h       |  8 ++++++
 iohandler.c                     |  3 ++-
 nbd.c                           |  4 ++-
 roms/ipxe                       |  2 +-
 tests/test-aio.c                | 58 +++++++++++++++++++++++------------------
 24 files changed, 289 insertions(+), 93 deletions(-)

-- 
2.5.3

^ permalink raw reply	[flat|nested] 22+ messages in thread

end of thread, other threads:[~2015-10-12 11:20 UTC | newest]

Thread overview: 22+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-10-09  5:45 [Qemu-devel] [PATCH 00/12] block: bdrv_drained_begin/end for transactions on dataplane devices Fam Zheng
2015-10-09  5:45 ` [Qemu-devel] [PATCH 01/12] aio: Introduce "type" in aio_set_fd_handler and aio_set_event_notifier Fam Zheng
2015-10-09 14:08   ` Kevin Wolf
2015-10-09  5:45 ` [Qemu-devel] [PATCH 02/12] aio: Save fd client type to AioHandler Fam Zheng
2015-10-09 14:13   ` Kevin Wolf
2015-10-09  5:45 ` [Qemu-devel] [PATCH 03/12] nbd: Mark fd handlers client type as "external" Fam Zheng
2015-10-09 14:16   ` Kevin Wolf
2015-10-09  5:45 ` [Qemu-devel] [PATCH 04/12] dataplane: Mark host notifiers' " Fam Zheng
2015-10-09 14:18   ` Kevin Wolf
2015-10-09  5:45 ` [Qemu-devel] [PATCH 05/12] aio: introduce aio_{disable, enable}_clients Fam Zheng
2015-10-09 14:10   ` Kevin Wolf
2015-10-09 14:31   ` Kevin Wolf
2015-10-09 16:27     ` Fam Zheng
2015-10-12  8:31       ` Kevin Wolf
2015-10-12 11:20         ` Fam Zheng
2015-10-09  5:45 ` [Qemu-devel] [PATCH 06/12] block: Introduce "drained begin/end" API Fam Zheng
2015-10-09  5:45 ` [Qemu-devel] [PATCH 07/12] block: Add "drained begin/end" for transactional external snapshot Fam Zheng
2015-10-09  5:45 ` [Qemu-devel] [PATCH 08/12] block: Add "drained begin/end" for transactional backup Fam Zheng
2015-10-09  5:45 ` [Qemu-devel] [PATCH 09/12] block: Add "drained begin/end" for transactional blockdev-backup Fam Zheng
2015-10-09  5:45 ` [Qemu-devel] [PATCH 10/12] block: Add "drained begin/end" for internal snapshot Fam Zheng
2015-10-09  5:45 ` [Qemu-devel] [PATCH 11/12] block: Introduce BlockDriver.bdrv_drain callback Fam Zheng
2015-10-09  5:45 ` [Qemu-devel] [PATCH 12/12] qed: Implement .bdrv_drain Fam Zheng

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.