]> git.proxmox.com Git - pve-qemu.git/commit - debian/patches/pve/0046-block-add-alloc-track-driver.patch
alloc track: acquire BS AIO context during dropping
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Tue, 6 Apr 2021 14:02:56 +0000 (16:02 +0200)
committerThomas Lamprecht <t.lamprecht@proxmox.com>
Tue, 6 Apr 2021 14:27:48 +0000 (16:27 +0200)
commitb36e8acc3120c641ba5f12682441964bc33b03eb
treeb2d8c39fe395c11b56f167d1e2b9525c34ebd3fc
parentaa42ea267e235fda4e879667adf04e35d31ba303
alloc track: acquire BS AIO context during dropping

ran into this when live-restoring a backup configured for IO-threads,
got the good ol':
> qemu: qemu_mutex_unlock_impl: Operation not permitted
error.

Checking out the history of the related bdrv_backup_top_drop(*bs)
method, we can see that it used to do the AIO context acquiring too,
but in the backup path this was problematic and was changed to be
higher up in the call path in a upstream series from Stefan[0].

That said, this is a completely different code path and it is safe to
do so here. We always run from the main threads's AIO context here
and we call it only indirectly once, guarded by checking for
`s->drop_state == DropNone` and set `s->drop_state = DropRequested`
shortly before we schedule the track_drop() in a bh.

[0]: https://lists.gnu.org/archive/html/qemu-devel/2020-03/msg09139.html

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
debian/patches/pve/0047-block-add-alloc-track-driver.patch