qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH v6 00/12] block: Protect nested event loop with bdrv_drained_begin and bdrv_drained_end
@ 2015-10-22  6:32 Fam Zheng
  2015-10-22  6:32 ` [Qemu-devel] [PATCH v6 01/12] aio: Add "is_external" flag for event handlers Fam Zheng
                   ` (11 more replies)
  0 siblings, 12 replies; 18+ messages in thread
From: Fam Zheng @ 2015-10-22  6:32 UTC (permalink / raw)
  To: qemu-devel; +Cc: kwolf, pbonzini, jcody, stefanha, qemu-block

v6: Add Kevin's rev-by in patches 1-3, 6-8, 10, 12.
    Add Jeff's rev-by in patches 1, 2, 6-8, 10.
    04: Fix spelling and wording in comments. [Jeff]
        Add assert at decrement. [Jeff]
    05: Fix bad rebase. [Jeff]
    09: Let blk_is_available come first. [Jeff, Kevin]
    11: Rewrite bdrv_qed_drain. [Jeff]

v5: Rebase onto Kevin's block tree.

v4: Rebase on to master so fix the "bdrv_move_feature_fields" issue.

v3: Call bdrv_drain unconditionally in bdrv_drained_begin.
    Document the internal I/O implications between bdrv_drain_begin and end.

The nested aio_poll()'s in block layer has a bug that new r/w requests from
ioeventfds and nbd exports are processed, which might break the caller's
semantics (qmp_transaction) or even pointers (bdrv_reopen).

Fam Zheng (12):
  aio: Add "is_external" flag for event handlers
  nbd: Mark fd handlers client type as "external"
  dataplane: Mark host notifiers' client type as "external"
  aio: introduce aio_{disable,enable}_external
  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
  tests: Add test case for aio_disable_external

 aio-posix.c                     |  9 ++++-
 aio-win32.c                     |  8 +++-
 async.c                         |  3 +-
 block/curl.c                    | 14 ++++---
 block/io.c                      | 23 +++++++++++-
 block/iscsi.c                   |  9 ++---
 block/linux-aio.c               |  5 ++-
 block/nbd-client.c              | 10 +++--
 block/nfs.c                     | 17 ++++-----
 block/qed.c                     | 15 ++++++++
 block/sheepdog.c                | 38 ++++++++++++-------
 block/ssh.c                     |  5 ++-
 block/win32-aio.c               |  5 ++-
 blockdev.c                      | 38 ++++++++++++++++---
 hw/block/dataplane/virtio-blk.c |  5 ++-
 hw/scsi/virtio-scsi-dataplane.c | 22 +++++++----
 include/block/aio.h             | 40 ++++++++++++++++++++
 include/block/block.h           | 24 ++++++++++++
 include/block/block_int.h       |  8 ++++
 iohandler.c                     |  3 +-
 nbd.c                           |  4 +-
 tests/test-aio.c                | 82 ++++++++++++++++++++++++++++-------------
 22 files changed, 294 insertions(+), 93 deletions(-)

-- 
2.4.3

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

end of thread, other threads:[~2015-10-23  3:07 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-22  6:32 [Qemu-devel] [PATCH v6 00/12] block: Protect nested event loop with bdrv_drained_begin and bdrv_drained_end Fam Zheng
2015-10-22  6:32 ` [Qemu-devel] [PATCH v6 01/12] aio: Add "is_external" flag for event handlers Fam Zheng
2015-10-22  6:32 ` [Qemu-devel] [PATCH v6 02/12] nbd: Mark fd handlers client type as "external" Fam Zheng
2015-10-22  6:32 ` [Qemu-devel] [PATCH v6 03/12] dataplane: Mark host notifiers' " Fam Zheng
2015-10-22  6:32 ` [Qemu-devel] [PATCH v6 04/12] aio: introduce aio_{disable, enable}_external Fam Zheng
2015-10-22  6:32 ` [Qemu-devel] [PATCH v6 05/12] block: Introduce "drained begin/end" API Fam Zheng
2015-10-22  6:32 ` [Qemu-devel] [PATCH v6 06/12] block: Add "drained begin/end" for transactional external snapshot Fam Zheng
2015-10-22  6:32 ` [Qemu-devel] [PATCH v6 07/12] block: Add "drained begin/end" for transactional backup Fam Zheng
2015-10-22  6:32 ` [Qemu-devel] [PATCH v6 08/12] block: Add "drained begin/end" for transactional blockdev-backup Fam Zheng
2015-10-22  6:32 ` [Qemu-devel] [PATCH v6 09/12] block: Add "drained begin/end" for internal snapshot Fam Zheng
2015-10-22 10:18   ` Kevin Wolf
2015-10-22 11:05     ` Jeff Cody
2015-10-22  6:32 ` [Qemu-devel] [PATCH v6 10/12] block: Introduce BlockDriver.bdrv_drain callback Fam Zheng
2015-10-22  6:32 ` [Qemu-devel] [PATCH v6 11/12] qed: Implement .bdrv_drain Fam Zheng
2015-10-22 10:53   ` Kevin Wolf
2015-10-22 20:59     ` Paolo Bonzini
2015-10-23  3:07       ` Fam Zheng
2015-10-22  6:33 ` [Qemu-devel] [PATCH v6 12/12] tests: Add test case for aio_disable_external Fam Zheng

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).