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


Reply via email to