dcavalca / rpms / qemu

Forked from rpms/qemu a year ago
Clone

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

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