Am 29.08.2026 um 00:20 hat Denis V. Lunev geschrieben:
> From: Denis V. Lunev <[email protected]>
> 
> it->bs is the cursor into monitor_bdrv_states for the second phase of
> bdrv_next(), so it has to be NULL when that phase starts. Commit
> f6d38c9f6d made the first phase store the node it returns there, to
> unreference the right one when the graph changes underneath. The cursor
> is now left pointing at the last BlockBackend root, so the second phase
> resumes from there instead of from the head of the list and never
> returns a node added before it.
> 
> A skipped node drops out of the vm_stop and migration handover paths:
> not flushed, not inactivated, not snapshotted. bdrv_inactivate_all()
> still reports success, so the node keeps its image lock and the
> migration target cannot open the image. Only detached nodes are hit in
> practice, as these callers also recurse into children.
> 
> Reset the cursor when the second phase starts. old_bs is taken at the
> top of the function, so f6d38c9f6d keeps working.
> 
> Fixes: f6d38c9f6d ("block-backend: fix edge case in bdrv_next() where BDS 
> associated to BB changes")
> Signed-off-by: Denis V. Lunev <[email protected]>
> Cc: Fiona Ebner <[email protected]>
> Cc: Kevin Wolf <[email protected]>

Thanks, applied to the block branch.

Kevin


Reply via email to