diff options
| author | Kevin Wolf <kwolf@redhat.com> | 2023-09-11 11:46:08 +0200 |
|---|---|---|
| committer | Kevin Wolf <kwolf@redhat.com> | 2023-09-20 17:46:01 +0200 |
| commit | 2f64e1fc57f1a275637ff6c34cb1a7207dc9e8c8 (patch) | |
| tree | db297283fbbfa75f3918304bb854365d1bdc9ace /python/qemu/machine/machine.py | |
| parent | ad29eb3ddc6ca0081a4d6fa8620ec2b8053e98b9 (diff) | |
| download | focaccia-qemu-2f64e1fc57f1a275637ff6c34cb1a7207dc9e8c8.tar.gz focaccia-qemu-2f64e1fc57f1a275637ff6c34cb1a7207dc9e8c8.zip | |
block: Mark bdrv_replace_child_tran() GRAPH_WRLOCK
Instead of taking the writer lock internally, require callers to already hold it when calling bdrv_replace_child_tran(). These callers will typically already hold the graph lock once the locking work is completed, which means that they can't call functions that take it internally. While a graph lock is held, polling is not allowed. Therefore draining the necessary nodes can no longer be done in bdrv_remove_child() and bdrv_replace_node_noperm(), but the callers must already make sure that they are drained. Note that the transaction callbacks still take the lock internally, so tran_finalize() must be called without the lock held. This is because bdrv_append() also calls bdrv_attach_child_noperm(), which currently requires to be called unlocked. Once it changes, the transaction callbacks can be changed, too. Signed-off-by: Kevin Wolf <kwolf@redhat.com> Reviewed-by: Emanuele Giuseppe Esposito <eesposit@redhat.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Message-ID: <20230911094620.45040-10-kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'python/qemu/machine/machine.py')
0 files changed, 0 insertions, 0 deletions