migration: Move yank outside qemu_start_incoming_migration()
commitcc48c587d25ff5dd7dddb4e5072de9ca8464c832
authorPeter Xu <peterx@redhat.com>
Tue, 29 Jun 2021 18:13:55 +0000 (29 14:13 -0400)
committerDr. David Alan Gilbert <dgilbert@redhat.com>
Mon, 5 Jul 2021 09:51:26 +0000 (5 10:51 +0100)
tree51f59c0c70e1c5be1abe5cbad2d426da9ef1cf49
parentc00d434ac6f202b1e81aa52f3385bd9c22ac1599
migration: Move yank outside qemu_start_incoming_migration()

Starting from commit b5eea99ec2f5c, qmp_migrate_recover() calls unregister
before calling qemu_start_incoming_migration(). I believe it wanted to mitigate
the next call to yank_register_instance(), but I think that's wrong.

Firstly, if during recover, we should keep the yank instance there, not
"quickly removing and adding it back".

Meanwhile, calling qmp_migrate_recover() twice with b5eea99ec2f5c will directly
crash the dest qemu (right now it can't; but it'll start to work right after
the next patch) because the 1st call of qmp_migrate_recover() will unregister
permanently when the channel failed to establish, then the 2nd call of
qmp_migrate_recover() crashes at yank_unregister_instance().

This patch fixes it by moving yank ops out of qemu_start_incoming_migration()
into qmp_migrate_incoming.  For qmp_migrate_recover(), drop the unregister of
yank instance too since we keep it there during the recovery phase.

Signed-off-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Message-Id: <20210629181356.217312-2-peterx@redhat.com>
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
migration/migration.c