]> git.ipfire.org Git - thirdparty/qemu.git/commit
block: move drain outside of quorum_add_child()
authorFiona Ebner <f.ebner@proxmox.com>
Fri, 30 May 2025 15:10:51 +0000 (17:10 +0200)
committerKevin Wolf <kwolf@redhat.com>
Wed, 4 Jun 2025 16:16:34 +0000 (18:16 +0200)
commit0414930d3adfa89299eaea5ce92accab15d9fba5
tree3ca552e9969145c057ac4954a165f036183f2170
parent77f3965ba7fed5b35212171a1e41c20c05a7ef11
block: move drain outside of quorum_add_child()

This is part of resolving the deadlock mentioned in commit "block:
move draining out of bdrv_change_aio_context() and mark GRAPH_RDLOCK".

The quorum_add_child() callback runs under the graph lock, so it is
not allowed to drain. It is only called as the .bdrv_add_child()
callback, which is only called in the bdrv_add_child() function, which
also runs under the graph lock.

The bdrv_add_child() function is called by qmp_x_blockdev_change(),
where a drained section is introduced.

Signed-off-by: Fiona Ebner <f.ebner@proxmox.com>
Message-ID: <20250530151125.955508-15-f.ebner@proxmox.com>
Reviewed-by: Kevin Wolf <kwolf@redhat.com>
Signed-off-by: Kevin Wolf <kwolf@redhat.com>
block.c
block/quorum.c
blockdev.c
include/block/block_int-common.h