[Spice-devel] changing the timing of spice client linking in migration (RHBZ #725009)
kraxel at redhat.com
Thu Aug 25 03:53:32 PDT 2011
> After some discussions with Alon, we came to the conclusion that in
> order to revive seamless migration we need to solve the following race
> conditions :
> race 1: target starts before the client managed to connect to it.
> possible solutions:
> 1) qxl savevm will hold (with timeout) migration till client is
> connected to target. Will it be acceptable by qemu? (Gerd?)
> However, qxl is not necessarily installed...
> 2) spice will try to connect the target immediately when it receives
> client_migrate_info from libvirt, and will wait till it succeeds (and by
> this will hold migration. (libvirt - can we count on executing
> client_migrate_info just before migration starts and not a long time
One pretty fundamental issue here is that qemu doesn't accept any new
connections while the migration is running. IIRC this applies only to
the final stage where all device state is migrated. But that still
pretty much implies that (1) isn't going to work.
I've played with a approach simliar to (2) long ago. Actually did it by
registering a "live" migration handler. Didn't work that well too.
spice client will stay connected to both source and target for a long
time, and the spice code base simply couldn't handle that very well.
One problem was a timeout somewhere which was *way* to short. Second
was that some stuff such as new connects are blocked in that "migration"
state. Doesn't hurt much if that lasts a second or two, but for a few
minutes it isn't acceptable. Maybe there was more which I don't remember.
More information about the Spice-devel