The conversion of qmp_block_resize() to coroutines exposed a preexisting
locking bug in the drain implementation that can cause deadlocks.
As it happens, fixing this bug reveals in turn that the locking in
qmp_block_resize() itself is incomplete, too.
Kevin Wolf (3):
block: Simplify qmp_block_resize() error paths
block: Fix locking in qmp_block_resize()
block: Fix deadlock in bdrv_co_yield_to_drain()
block/io.c | 41 ++++++++++++++++++++++++-----------------
blockdev.c | 12 +++++++-----
2 files changed, 31 insertions(+), 22 deletions(-)
--
2.28.0