[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-block] [PATCH v7 00/10] block: Protect nested event loop with bdrv
From: |
Fam Zheng |
Subject: |
[Qemu-block] [PATCH v7 00/10] block: Protect nested event loop with bdrv_drained_begin and bdrv_drained_end |
Date: |
Fri, 23 Oct 2015 11:08:04 +0800 |
v7: Exclude bdrv_drain and bdrv_qed_drain patches, they'll follow the
bdrv_drain fix for bdrv_aio_flush.
Fix internal snapshot clean.
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 (10):
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
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 | 17 +++++++++
block/iscsi.c | 9 ++---
block/linux-aio.c | 5 ++-
block/nbd-client.c | 10 +++--
block/nfs.c | 17 ++++-----
block/sheepdog.c | 38 ++++++++++++-------
block/ssh.c | 5 ++-
block/win32-aio.c | 5 ++-
blockdev.c | 40 +++++++++++++++++---
hw/block/dataplane/virtio-blk.c | 5 ++-
hw/scsi/virtio-scsi-dataplane.c | 22 +++++++----
include/block/aio.h | 40 ++++++++++++++++++++
include/block/block.h | 19 ++++++++++
include/block/block_int.h | 2 +
iohandler.c | 3 +-
nbd.c | 4 +-
tests/test-aio.c | 82 ++++++++++++++++++++++++++++-------------
21 files changed, 265 insertions(+), 92 deletions(-)
--
2.4.3
- [Qemu-block] [PATCH v7 00/10] block: Protect nested event loop with bdrv_drained_begin and bdrv_drained_end,
Fam Zheng <=
- [Qemu-block] [PATCH v7 01/10] aio: Add "is_external" flag for event handlers, Fam Zheng, 2015/10/22
- [Qemu-block] [PATCH v7 02/10] nbd: Mark fd handlers client type as "external", Fam Zheng, 2015/10/22
- [Qemu-block] [PATCH v7 03/10] dataplane: Mark host notifiers' client type as "external", Fam Zheng, 2015/10/22
- [Qemu-block] [PATCH v7 04/10] aio: introduce aio_{disable, enable}_external, Fam Zheng, 2015/10/22
- [Qemu-block] [PATCH v7 05/10] block: Introduce "drained begin/end" API, Fam Zheng, 2015/10/22