[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH v4 0/9] block: Fixes for bdrv_drain
From: |
Stefan Hajnoczi |
Subject: |
Re: [Qemu-devel] [PATCH v4 0/9] block: Fixes for bdrv_drain |
Date: |
Mon, 9 Nov 2015 16:50:51 +0000 |
User-agent: |
Mutt/1.5.23 (2015-06-09) |
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
- [Qemu-devel] [PATCH v4 1/9] block: Add more types for tracked request, (continued)
- [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
- Re: [Qemu-devel] [PATCH v4 0/9] block: Fixes for bdrv_drain,
Stefan Hajnoczi <=