[pve-devel] [PATCH qemu] add fix for crash during live migration in combination with block flush
Thomas Lamprecht
t.lamprecht at proxmox.com
Wed Jan 15 17:28:17 CET 2025
Am 08.01.25 um 14:03 schrieb Fiona Ebner:
> Setting blk->root is a graph change operation and thus needs to be
> protected by the block graph write lock in blk_remove_bs(). The
> assignment to blk->root in blk_insert_bs() is already protected by
> the block graph write lock.
>
> In particular, the graph read lock in blk_co_do_flush() could
> previously not ensure that blk_bs(blk) would always return the same
> value during the locked section, which could lead to a segfault [0] in
> combination with migration [1].
>
> From the user-provided backtraces in the forum thread [1], it seems
> like blk_co_do_flush() managed to get past the
> blk_co_is_available(blk) check, meaning that blk_bs(blk) returned a
> non-NULL value during the check, but then, when calling
> bdrv_co_flush(), blk_bs(blk) returned NULL.
>
> [0]:
>
>> 0 bdrv_primary_child (bs=bs at entry=0x0) at ../block.c:8287
>> 1 bdrv_co_flush (bs=0x0) at ../block/io.c:2948
>> 2 bdrv_co_flush_entry (opaque=0x7a610affae90) at block/block-gen.c:901
>
> [1]: https://forum.proxmox.com/threads/158072
>
> Signed-off-by: Fiona Ebner <f.ebner at proxmox.com>
> ---
>
> Upstream submission of the same patch:
> https://lore.kernel.org/qemu-devel/20250108124649.333668-1-f.ebner@proxmox.com/T/
I only skimmed the upstream discussion, but seems that there is still some
issue left; so should I wait this version out?
More information about the pve-devel
mailing list