[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 00/12] block: Protect nested event loop with bdrv
From: |
Fam Zheng |
Subject: |
[Qemu-devel] [PATCH v4 00/12] block: Protect nested event loop with bdrv_drained_begin and bdrv_drained_end |
Date: |
Tue, 20 Oct 2015 13:16:51 +0800 |
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 | 27 +++++++++++---
hw/block/dataplane/virtio-blk.c | 5 ++-
hw/scsi/virtio-scsi-dataplane.c | 22 +++++++----
include/block/aio.h | 39 ++++++++++++++++++++
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, 274 insertions(+), 93 deletions(-)
--
2.4.3
- [Qemu-devel] [PATCH v4 00/12] block: Protect nested event loop with bdrv_drained_begin and bdrv_drained_end,
Fam Zheng <=
- [Qemu-devel] [PATCH v4 04/12] aio: introduce aio_{disable, enable}_external, Fam Zheng, 2015/10/20
- [Qemu-devel] [PATCH v4 06/12] block: Add "drained begin/end" for transactional external snapshot, Fam Zheng, 2015/10/20
- [Qemu-devel] [PATCH v4 05/12] block: Introduce "drained begin/end" API, Fam Zheng, 2015/10/20
- [Qemu-devel] [PATCH v4 07/12] block: Add "drained begin/end" for transactional backup, Fam Zheng, 2015/10/20
- [Qemu-devel] [PATCH v4 08/12] block: Add "drained begin/end" for transactional blockdev-backup, Fam Zheng, 2015/10/20
- [Qemu-devel] [PATCH v4 09/12] block: Add "drained begin/end" for internal snapshot, Fam Zheng, 2015/10/20
- [Qemu-devel] [PATCH v4 12/12] tests: Add test case for aio_disable_external, Fam Zheng, 2015/10/20
- [Qemu-devel] [PATCH v4 02/12] nbd: Mark fd handlers client type as "external", Fam Zheng, 2015/10/20
- [Qemu-devel] [PATCH v4 01/12] aio: Add "is_external" flag for event handlers, Fam Zheng, 2015/10/20
- [Qemu-devel] [PATCH v4 10/12] block: Introduce BlockDriver.bdrv_drain callback, Fam Zheng, 2015/10/20