dcavalca / rpms / qemu

Forked from rpms/qemu a year ago
Clone

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

5544c1
From 7fbcbd48d2898935369b443a489ea79d49fe19c4 Mon Sep 17 00:00:00 2001
c8dfc6
From: Yonit Halperin <yhalperi@redhat.com>
c8dfc6
Date: Tue, 21 Aug 2012 11:51:55 +0300
5544c1
Subject: [PATCH] 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>
5544c1
(cherry picked from commit f5bb039c6d97ef3e664094eab3c9a4dc1824ed73)
5544c1
5544c1
Signed-off-by: Michael Roth <mdroth@linux.vnet.ibm.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
-- 
5544c1
1.7.12.1
c8dfc6