block: Unify order in drain functions
commit60369b86c427c6646c53b607b5a3e6b507ffe8d6
authorKevin Wolf <kwolf@redhat.com>
Wed, 6 Dec 2017 10:00:59 +0000 (6 11:00 +0100)
committerKevin Wolf <kwolf@redhat.com>
Fri, 22 Dec 2017 14:03:41 +0000 (22 15:03 +0100)
tree28e433c5a3bbc83662c857a4b64d9690cbad7b98
parent5280aa32e140a262bbc6e8e06fd4abb137900016
block: Unify order in drain functions

Drain requests are propagated to child nodes, parent nodes and directly
to the AioContext. The order in which this happened was different
between all combinations of drain/drain_all and begin/end.

The correct order is to keep children only drained when their parents
are also drained. This means that at the start of a drained section, the
AioContext needs to be drained first, the parents second and only then
the children. The correct order for the end of a drained section is the
opposite.

This patch changes the three other functions to follow the example of
bdrv_drained_begin(), which is the only one that got it right.

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