[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v5 00/12] block: Protect nested event loop with bdrv
From: |
Fam Zheng |
Subject: |
[Qemu-devel] [PATCH v5 00/12] block: Protect nested event loop with bdrv_drained_begin and bdrv_drained_end |
Date: |
Wed, 21 Oct 2015 10:06:37 +0800 |
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