[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-block] [Qemu-devel] [PATCH v3 00/12] block: Protect nested eve
From: |
Fam Zheng |
Subject: |
Re: [Qemu-block] [Qemu-devel] [PATCH v3 00/12] block: Protect nested event loop with bdrv_drained_begin and bdrv_drained_end |
Date: |
Mon, 19 Oct 2015 07:34:07 +0800 |
User-agent: |
Zoho Mail |
---- On Fri, 16 Oct 2015 18:12:11 +0800 address@hidden wrote ----
I'll rebase this on to the recent bdrv_removal pull request today.
Fam
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.c | 2 +
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 ++++++++++++++++++++++++++++-------------
23 files changed, 276 insertions(+), 93 deletions(-)
--
2.4.3
- [Qemu-block] [PATCH v3 07/12] block: Add "drained begin/end" for transactional backup, (continued)
- [Qemu-block] [PATCH v3 07/12] block: Add "drained begin/end" for transactional backup, Fam Zheng, 2015/10/16
- [Qemu-block] [PATCH v3 06/12] block: Add "drained begin/end" for transactional external snapshot, Fam Zheng, 2015/10/16
- [Qemu-block] [PATCH v3 08/12] block: Add "drained begin/end" for transactional blockdev-backup, Fam Zheng, 2015/10/16
- [Qemu-block] [PATCH v3 02/12] nbd: Mark fd handlers client type as "external", Fam Zheng, 2015/10/16
- [Qemu-block] [PATCH v3 01/12] aio: Add "is_external" flag for event handlers, Fam Zheng, 2015/10/16
- [Qemu-block] [PATCH v3 09/12] block: Add "drained begin/end" for internal snapshot, Fam Zheng, 2015/10/16
- [Qemu-block] [PATCH v3 12/12] tests: Add test case for aio_disable_external, Fam Zheng, 2015/10/16
- [Qemu-block] [PATCH v3 10/12] block: Introduce BlockDriver.bdrv_drain callback, Fam Zheng, 2015/10/16
- [Qemu-block] [PATCH v3 11/12] qed: Implement .bdrv_drain, Fam Zheng, 2015/10/16
- [Qemu-block] [PATCH v3 03/12] dataplane: Mark host notifiers' client type as "external", Fam Zheng, 2015/10/16
- Re: [Qemu-block] [Qemu-devel] [PATCH v3 00/12] block: Protect nested event loop with bdrv_drained_begin and bdrv_drained_end,
Fam Zheng <=