diff options
author | Kevin Wolf <kwolf@redhat.com> | 2017-12-14 11:25:16 +0100 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2018-06-18 15:03:25 +0200 |
commit | c13ad59f012cbbccb866a10477458e69bc868dbb (patch) | |
tree | 8e1e5c96e0f1f98c19e5419fda528d2c26c2e4e4 /qobject | |
parent | 7d40d9ef9dfb4948a857bfc6ec8408eed1d1d9e7 (diff) |
block: Don't manually poll in bdrv_drain_all()
All involved nodes are already idle, we called bdrv_do_drain_begin() on
them.
The comment in the code suggested that this was not correct because the
completion of a request on one node could spawn a new request on a
different node (which might have been drained before, so we wouldn't
drain the new request). In reality, new requests to different nodes
aren't spawned out of nothing, but only in the context of a parent
request, and they aren't submitted to random nodes, but only to child
nodes. As long as we still poll for the completion of the parent request
(which we do), draining each root node separately is good enough.
Remove the additional polling code from bdrv_drain_all_begin() and
replace it with an assertion that all nodes are already idle after we
drained them separately.
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com>
Diffstat (limited to 'qobject')
0 files changed, 0 insertions, 0 deletions