Blame 0202-spice-notify-spice-server-on-vm-start-stop.patch

c8dfc6
From 2d2ccb50223c16fbf08140b9dd59275657de2a61 Mon Sep 17 00:00:00 2001
c8dfc6
From: Yonit Halperin <yhalperi@redhat.com>
c8dfc6
Date: Tue, 21 Aug 2012 11:51:55 +0300
c8dfc6
Subject: [PATCH 202/215] spice: notify spice server on vm start/stop
c8dfc6
c8dfc6
Spice server needs to know about the vm state in order to prevent
c8dfc6
attempts to write to devices when they are stopped, mainly during
c8dfc6
the non-live stage of migration.
c8dfc6
Instead, spice will take care of restoring this writes, on the migration
c8dfc6
target side, after migration completes.
c8dfc6
c8dfc6
Signed-off-by: Yonit Halperin <yhalperi@redhat.com>
c8dfc6
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
c8dfc6
---
c8dfc6
 ui/spice-core.c | 14 ++++++++++++++
c8dfc6
 1 file changed, 14 insertions(+)
c8dfc6
c8dfc6
diff --git a/ui/spice-core.c b/ui/spice-core.c
c8dfc6
index bb4f585..a515c94 100644
c8dfc6
--- a/ui/spice-core.c
c8dfc6
+++ b/ui/spice-core.c
c8dfc6
@@ -546,6 +546,18 @@ static int add_channel(const char *name, const char *value, void *opaque)
c8dfc6
     return 0;
c8dfc6
 }
c8dfc6
 
c8dfc6
+static void vm_change_state_handler(void *opaque, int running,
c8dfc6
+                                    RunState state)
c8dfc6
+{
c8dfc6
+#if SPICE_SERVER_VERSION >= 0x000b02 /* 0.11.2 */
c8dfc6
+    if (running) {
c8dfc6
+        spice_server_vm_start(spice_server);
c8dfc6
+    } else {
c8dfc6
+        spice_server_vm_stop(spice_server);
c8dfc6
+    }
c8dfc6
+#endif
c8dfc6
+}
c8dfc6
+
c8dfc6
 void qemu_spice_init(void)
c8dfc6
 {
c8dfc6
     QemuOpts *opts = QTAILQ_FIRST(&qemu_spice_opts.head);
c8dfc6
@@ -719,6 +731,8 @@ void qemu_spice_init(void)
c8dfc6
     qemu_spice_input_init();
c8dfc6
     qemu_spice_audio_init();
c8dfc6
 
c8dfc6
+    qemu_add_vm_change_state_handler(vm_change_state_handler, &spice_server);
c8dfc6
+
c8dfc6
     g_free(x509_key_file);
c8dfc6
     g_free(x509_cert_file);
c8dfc6
     g_free(x509_cacert_file);
c8dfc6
-- 
c8dfc6
1.7.12
c8dfc6