aboutsummaryrefslogtreecommitdiff
path: root/scripts/tracetool/backend
diff options
context:
space:
mode:
authorFiona Ebner <f.ebner@proxmox.com>2025-05-30 17:11:01 +0200
committerKevin Wolf <kwolf@redhat.com>2025-07-14 15:40:58 +0200
commit6b89e851fabf78d7fb090bcdc71789ea1ef55c9b (patch)
tree3ccd347ab2744d9eb72f687102ac7138da93192e /scripts/tracetool/backend
parent502f00c51ad9a133c728b52e96c7e8e0cffef191 (diff)
downloadqemu-6b89e851fabf78d7fb090bcdc71789ea1ef55c9b.zip
qemu-6b89e851fabf78d7fb090bcdc71789ea1ef55c9b.tar.gz
qemu-6b89e851fabf78d7fb090bcdc71789ea1ef55c9b.tar.bz2
block: add bdrv_graph_wrlock_drained() convenience wrapper
Many write-locked sections are also drained sections. A new bdrv_graph_wrunlock_drained() wrapper around bdrv_graph_wrunlock() is introduced, which will begin a drained section first. A global variable is used so bdrv_graph_wrunlock() knows if it also needs to end such a drained section. Both the aio_poll call in bdrv_graph_wrlock() and the aio_bh_poll() in bdrv_graph_wrunlock() can re-enter a write-locked section. While for the latter, ending the drain could be moved to before the call, the former requires that the variable is a counter and not just a boolean. Since the wrapper calls bdrv_drain_all_begin(), which must be called with the graph unlocked, mark the wrapper as GRAPH_UNLOCKED too. The switch to the new helpers was generated with the following commands and then manually checked: find . -name '*.c' -exec sed -i -z 's/bdrv_drain_all_begin();\n\s*bdrv_graph_wrlock();/bdrv_graph_wrlock_drained();/g' {} ';' find . -name '*.c' -exec sed -i -z 's/bdrv_graph_wrunlock();\n\s*bdrv_drain_all_end();/bdrv_graph_wrunlock();/g' {} ';' Suggested-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Fiona Ebner <f.ebner@proxmox.com> Message-ID: <20250530151125.955508-25-f.ebner@proxmox.com> [kwolf: Removed redundant GRAPH_UNLOCKED] Reviewed-by: Kevin Wolf <kwolf@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
Diffstat (limited to 'scripts/tracetool/backend')
0 files changed, 0 insertions, 0 deletions