block: Use bdrv_do_drain_begin/end in bdrv_drain_all()
authorKevin Wolf <kwolf@redhat.com>
Thu, 14 Dec 2017 09:27:23 +0000 (10:27 +0100)
committerKevin Wolf <kwolf@redhat.com>
Mon, 18 Jun 2018 13:03:25 +0000 (15:03 +0200)
commit79ab8b21dc19c08adc407504e456ff64b9dacb66
treecdded31bbb195d4716523f06c6a112485bad565c
parentbb6756895459f181e2f25e877d3d7a10c297b5c8
block: Use bdrv_do_drain_begin/end in bdrv_drain_all()

bdrv_do_drain_begin/end() implement already everything that
bdrv_drain_all_begin/end() need and currently still do manually: Disable
external events, call parent drain callbacks, call block driver
callbacks.

It also does two more things:

The first is incrementing bs->quiesce_counter. bdrv_drain_all() already
stood out in the test case by behaving different from the other drain
variants. Adding this is not only safe, but in fact a bug fix.

The second is calling bdrv_drain_recurse(). We already do that later in
the same function in a loop, so basically doing an early first iteration
doesn't hurt.

Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
block/io.c
tests/test-bdrv-drain.c