[pve-devel] [PATCH qemu-server] migrate: keep VM paused after migration if it was before

Fabian Grünbichler f.gruenbichler at proxmox.com
Wed Apr 20 14:43:55 CEST 2022


On March 18, 2022 8:51 am, Fabian Ebner wrote:
> Also cannot issue a guest agent command in that case.
> 
> Reported in the community forum:
> https://forum.proxmox.com/threads/106618
> 
> Signed-off-by: Fabian Ebner <f.ebner at proxmox.com>
> ---
> 
> Best viewed with -w.
> 
>  PVE/QemuMigrate.pm | 54 ++++++++++++++++++++++++++--------------------
>  1 file changed, 31 insertions(+), 23 deletions(-)

patch looks good to me - it might make sense to restructure the 
conditionals a bit to log that resuming/fstrim was skipped though to 
reduce confusion (user that paused VM and user doing the migration might 
not be the same entity after all)?

one other thing I noticed (pre-existing, but the changes here made me 
look and my search came up short), inside phase2:

- start block job(s) without autocompletion and wait for them to 
  converge
- start RAM/state migration without autocompletion and wait for it to 
  converge
X both source and target VMs are paused now with "identical" state, 
irrespective of the source being paused or not initially
- cancel block job(s) (to close NBD writer(s) so that switchover can 
  proceed in phase3_cleanup)

if something happens after X in phase2, we enter phase2_cleanup, and 
attempt to cancel the migration, remove the lock, cancel the block jobs 
again, clean up bitmaps, stop the target VM, clean up remote disks, tear 
down the tunnel, and effectively exit the migration at that point BUT - 
we don't handle the paused state? is there a resume source (with this 
patch, guarded by source was not paused) missing or am I missing 
something?





More information about the pve-devel mailing list