On Mon, Nov 09, 2015 at 06:16:45PM +0800, Fam Zheng wrote: > 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 >
Thanks, applied to my block tree: https://github.com/stefanha/qemu/commits/block Stefan
signature.asc
Description: PGP signature