On Wed, Dec 06, 2017 at 11:53:03AM +0100, Kevin Wolf wrote:
> I was looking into the drain functions in order to develop them a bit in
> the direction that Fam suggested, to unify the code between bdrv_drain()
> and bdrv_drain_all() a bit more, and maybe to find a place to take
> coroutine locks for graph changes.
>
> The first thing I found is a bug in bdrv_drain_all(), so I'm already
> sending this part before I have made much progress with my actual plan.
>
> v2:
> - Added patches 5 and 6 [Paolo]
> - Fixed commit message of patch 1 [Eric]
>
> Kevin Wolf (6):
> block: Make bdrv_drain_invoke() recursive
> block: Call .drain_begin only once in bdrv_drain_all_begin()
> test-bdrv-drain: Test BlockDriver callbacks for drain
> block: bdrv_drain_recurse(): Remove unused begin parameter
> block: Don't wait for requests in bdrv_drain*_end()
> block: Unify order in drain functions
>
> block/io.c | 31 +++++++----
> tests/test-bdrv-drain.c | 137 ++++++++++++++++++++++++++++++++++++++++++++++++
> tests/Makefile.include | 2 +
> 3 files changed, 159 insertions(+), 11 deletions(-)
> create mode 100644 tests/test-bdrv-drain.c
>
> --
> 2.13.6
>
>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>