[Spice-devel] [spice-protocol PATCH 0/2] seamless migration support

Yonit Halperin yhalperi at redhat.com
Wed Aug 15 00:55:36 PDT 2012


This patch series, together with the patches following it for spice-common, spice, and spice-gtk,
introduce seamless migration support.

More details about seamless migration can be found in the commit msg of the 2nd
patch.

rhbz: 846910 836123 846911
related rhbz: 836135 (libvirt) 836133 (qemu)
Corresponding qemu patch series will be sent shortly. The qemu changes are required
for delaying libvirt from killing the src qemu till spice migration is complete. A qmp event is added
+ a 'migrated' flag for 'qeury-spice' output.

TODO:
- change the display channel migration data to hold cache and dictionary data only for the channel instance
  which actually restores them.
- consistent usb/smartcard channel ids: the channel ids of spicevmc are determined by the order of loading
  the devices interfaces. If the order of the devices in the qemu execution line is different between the
  migration src and dest, the migration data reaches the wrong channels and the migration is invalid.
  One solution can be to save the channel ids using a vmstate of the devices. However the client connects
  to the destination before the vmstate is loaded, so we will need to reorder the connections after the vmstate
  is loaded.
- bandwidth detection: the bandwidth detection we execute on connection startup is not executed on
  the destination side. It is not executed in order to avoid a hiccup, and also since we plan to get rid of it, and
  have a dynamic detection that employs data we transfer to the client anyway.
  The bandwidth setting is set in the main channel, and the display/snd channels queries it
  for tuning their setting. Since it is probable that the bandwidth will stay similar after migration,
  we may want to migrate low/high bandwidth flag as part of the main channel, and notify
  the rest of the channels when setting it (since they may be restored before the main channel is restored)
- latest qemu qxl migration is broken. I hit a lot of problems related to surfaces.
  I tested the patches using old qemu. Need to find out what went wrong in latest qemu.
- display channel optimizations: don't send surfaces info as part of the migration data if it is faster to
  resend them to the client by demand
- multi-client support


Yonit Halperin (2):
  add SPICE_MSG_MAIN_AGENT_CONNECTED_TOKENS
  seamless migration support

 spice/enums.h    |    6 ++++++
 spice/protocol.h |    2 ++
 2 files changed, 8 insertions(+), 0 deletions(-)

-- 
1.7.7.6



More information about the Spice-devel mailing list