[Spice-devel] changing the timing of spice client linking in migration (RHBZ #725009)

Gerd Hoffmann kraxel at redhat.com
Thu Aug 25 03:53:32 PDT 2011


   Hi,

> 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
> before?)

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.

HTH,
   Gerd



More information about the Spice-devel mailing list