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