The first paragraph of the cover letter was omitted, here it is:

Hi,
this series of patches, and the spice-protocol and qemu patches that will follow it, change spice migration protocol. Spice client is required to connect to the migration target before/as migration starts. Before, the client has connected to target upon migration completion, however, the ticket
was set in the beginning, thus when migration time was >
ticket_expiration_time, spice failed to connect to the target.
Another requirement that is addressed in these patches is making the host switching smoother and less noticable to the user.


On 09/19/2011 12:46 PM, Yonit Halperin wrote:
Here is a summary of the new migration scheme (copied from the commit msg of 
the first patch)

     migration source side
     ---------------------
     (1) spice_server_migrate_info (*): tell client to link
         to the target side - send SPICE_MSG_MAIN_MIGRATE_BEGIN.
         client_migrate_info cmd is asynchronous.
     (2) Complete client_migrate_info only when the client has been connected
         to the target - wait for 
SPICE_MSGC_MAIN_MIGRATE_(CONNECTED|CONNECT_ERROR) or a timeout.
     (3) spice_server_migrate_end: tell client migration it can switch to the 
target - send
         SPICE_MSG_MAIN_MIGRATE_END.
     (4) client cleans up all data related to the connection to the source and 
switches to the target.
         It sends SPICE_MSGC_MAIN_MIGRATE_END.

     migration target side
     ---------------------
     (1) the server identifies itself as a migraiton target since the client is 
linked with (connection_id != 0)
     (2) server doesn't start the channels' logic (channel->link) till it 
receives SPICE_MSGC_MAIN_MIGRATE_END
         from the client.

     *   After migration starts, the target qemu is blocked and cannot accept 
new spice client
         connections. Thus, we trigger the connection to the target upon 
client_migrate_info
         command.

Since I haven't completed testing these patches, they are marked as RFC.

Relevant branches are in cgit.freedesktop.org/~yhalperi/:
qemu/mig.spice.v42
spice-protocol/0.8.mig
spice/0.8.mig.v2


Yonit Halperin (19):
   server/spice.h: semi-seamless migration interface, RHBZ #738266
   server: handle migration interface addition
   server: support async client_migrate_info monitor command
   configure: spice-protocol>= 0.8.2 (semi-seamless migration protocol)
   server,proto: tell the client to connect to the migration target
     before migraton starts
   spice.proto: add SPICE_MSG_MAIN_MIGRATE_END&
     SPICE_MSGC_MAIN_MIGRATE_END
   server: send SPICE_MSG_MAIN_MIGRATE_END on spice_server_migrate_end
   server: move SPICE_MSG_MAIN_INIT sending code to a separate routine
   server: move the linking of channels to a separate routine
   server: handling semi-seamless migration in the target side
   server: turn spice_server_migrate_start into a valid call
   client: rewrite surfaces cache
   client: RedPeer::HostAuthOptions::set_cert_subject
   client: handle SpiceMsgMainMigrationBegin for 0.8.2
   client: handle SPICE_MSG_MAIN_MIGRATE_END
   client: main channel migration: do partial cleanup when switching
     hosts
   client: playback/record channels: implement on_disconnect
   client: display channel migration
   client: display channel - destroy all surfaces on disconnect

  client/application.cpp      |   57 +-----
  client/audio_channels.h     |   12 +-
  client/canvas.cpp           |   25 +++-
  client/canvas.h             |  152 ++-------------
  client/display_channel.cpp  |  322 +++++++++++++++++++-----------
  client/display_channel.h    |   31 ++--
  client/playback_channel.cpp |   22 ++-
  client/record_channel.cpp   |   39 +++--
  client/red_channel.cpp      |   61 ++++++
  client/red_channel.h        |   19 ++
  client/red_client.cpp       |  129 +++++++++++--
  client/red_client.h         |   13 ++
  client/red_gdi_canvas.cpp   |    4 +-
  client/red_gdi_canvas.h     |    2 +-
  client/red_gl_canvas.cpp    |    5 +-
  client/red_gl_canvas.h      |    2 +-
  client/red_peer.cpp         |   51 +++++
  client/red_peer.h           |    2 +-
  client/red_sw_canvas.cpp    |    6 +-
  client/red_sw_canvas.h      |    2 +-
  common/messages.h           |    2 +
  configure.ac                |    2 +-
  server/reds.c               |  453 +++++++++++++++++++++++++++++++++----------
  server/reds.h               |    4 +
  server/spice-experimental.h |    3 -
  server/spice.h              |   21 ++-
  spice.proto                 |    9 +-
  27 files changed, 967 insertions(+), 483 deletions(-)


_______________________________________________
Spice-devel mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/spice-devel

Reply via email to