[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PATCH v4 0/9] block: Fixes for bdrv_drain
From: |
Fam Zheng |
Subject: |
[Qemu-devel] [PATCH v4 0/9] block: Fixes for bdrv_drain |
Date: |
Mon, 9 Nov 2015 18:16:45 +0800 |
v4: Don't miss children's children. [Paolo]
v3: Don't reuse coroutine in bdrv_aio_ioctl. [Stefan]
Recursely call .bdrv_drain callback only. [Stefan, Paolo]
Added Kevin's reviewed-by in other patches.
v2: Add Kevin's reviewed-by in patches 1, 2, 5-7, 9.
Address Kevin's reviewing comments which are:
- Explicit "ret = 0" before out label in patch 3.
- Add missing qemu_aio_unref() in patch 4.
- Recurse into all children in bdrv_drain in patch 8.
Previously bdrv_drain and bdrv_drain_all don't handle ioctl, flush and discard
requests (which are fundamentally the same as read and write requests that
change disk state). Forgetting such requests leaves us in risk of violating
the invariant that bdrv_drain() callers rely on - all asynchronous requests
must have completed after bdrv_drain returns.
Enrich the tracked request types, and add tracked_request_begin/end pairs to
all three code paths. As a prerequisite, ioctl code is moved into coroutine
too.
The last two patches take care of QED's "need check" timer, so that after
bdrv_drain returns, the driver is in a consistent state.
Fam
Fam Zheng (9):
block: Add more types for tracked request
block: Track flush requests
block: Track discard requests
iscsi: Emulate commands in iscsi_aio_ioctl as iscsi_ioctl
block: Add ioctl parameter fields to BlockRequest
block: Emulate bdrv_ioctl with bdrv_aio_ioctl and track both
block: Drop BlockDriver.bdrv_ioctl
block: Introduce BlockDriver.bdrv_drain callback
qed: Implement .bdrv_drain
block/io.c | 150 +++++++++++++++++++++++++++++++++++++++-------
block/iscsi.c | 73 +++++++++++-----------
block/qed.c | 13 ++++
block/raw-posix.c | 8 ---
block/raw_bsd.c | 6 --
include/block/block.h | 16 +++--
include/block/block_int.h | 17 +++++-
7 files changed, 208 insertions(+), 75 deletions(-)
--
2.4.3
- [Qemu-devel] [PATCH v4 0/9] block: Fixes for bdrv_drain,
Fam Zheng <=
- [Qemu-devel] [PATCH v4 1/9] block: Add more types for tracked request, Fam Zheng, 2015/11/09
- [Qemu-devel] [PATCH v4 2/9] block: Track flush requests, Fam Zheng, 2015/11/09
- [Qemu-devel] [PATCH v4 3/9] block: Track discard requests, Fam Zheng, 2015/11/09
- [Qemu-devel] [PATCH v4 4/9] iscsi: Emulate commands in iscsi_aio_ioctl as iscsi_ioctl, Fam Zheng, 2015/11/09
- [Qemu-devel] [PATCH v4 6/9] block: Emulate bdrv_ioctl with bdrv_aio_ioctl and track both, Fam Zheng, 2015/11/09
- [Qemu-devel] [PATCH v4 5/9] block: Add ioctl parameter fields to BlockRequest, Fam Zheng, 2015/11/09
- [Qemu-devel] [PATCH v4 7/9] block: Drop BlockDriver.bdrv_ioctl, Fam Zheng, 2015/11/09
- [Qemu-devel] [PATCH v4 8/9] block: Introduce BlockDriver.bdrv_drain callback, Fam Zheng, 2015/11/09
- [Qemu-devel] [PATCH v4 9/9] qed: Implement .bdrv_drain, Fam Zheng, 2015/11/09