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 | 7
block/sheepdog.c| 38 ---
block/ssh.c | 5 ++-
block/win32-aio.c | 5 ++-
blockdev.c | 37 ---
hw/block/dataplane/virtio-blk.c | 5 ++-
hw/scsi/virtio-scsi-dataplane.c | 22 +++
include/block/aio.h | 39
include/block/block.h | 26 +
include/block/block_int.h | 8
iohandler.c | 3 +-
nbd.c | 4 +-
tests/test-aio.c| 82 -
22 files changed, 286 insertions(+), 93 deletions(-)
--
2.4.3