]> xenbits.xensource.com Git - libvirt.git/commitdiff
Added graceful shutdown support to QEMU/KVM (patch from Guido Guenther)
authorDaniel P. Berrange <berrange@redhat.com>
Wed, 9 Jan 2008 16:05:21 +0000 (16:05 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Wed, 9 Jan 2008 16:05:21 +0000 (16:05 +0000)
AUTHORS
ChangeLog
src/qemu_driver.c

diff --git a/AUTHORS b/AUTHORS
index c102fc4b91f01977d008d376d3f13449f3e584d8..51198269c7546353bb2c9452a9bdf6dea571763c 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -38,6 +38,7 @@ Patches have also been contributed by:
   Shuveb Hussain       <shuveb@binarykarma.com>
   Jim Paris            <jim@jtan.com>
   Chris Lalancette     <clalance@redhat.com>
+  Guido Guenther       <agx@sigxcpu.org>
 
   [....send patches to get your name here....]
 
index 104ce2e50ffa2b7b3f56718c31192119c8b241e0..627b0a96dc933374968fba9bce83e4442ceab72a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+Wed Jan  9 10:55:00 EST 2008 Daniel P. Berrange <berrange@redhat.com>
+
+       * src/qemu_driver.c: Wire up to system_shutdown command for
+       graceful ACPI triggered shutdown process (Guido Guenther)
+
 Tue Jan  8 12:48:00 EST 2008 Daniel P. Berrange <berrange@redhat.com>
 
        * src/util.c: cast  off_t to int in debug output to avoid warning
index f792eba1a0632df8a01744fe5a33dcc60db61439..55adb1844b33744507fc1e236b3bbe2be7e1d810 100644 (file)
@@ -1849,6 +1849,27 @@ static int qemudDomainResume(virDomainPtr dom) {
 }
 
 
+static int qemudDomainShutdown(virDomainPtr dom) {
+    struct qemud_driver *driver = (struct qemud_driver *)dom->conn->privateData;
+    struct qemud_vm *vm = qemudFindVMByID(driver, dom->id);
+    char* info;
+
+    if (!vm) {
+        qemudReportError(dom->conn, dom, NULL, VIR_ERR_INVALID_DOMAIN,
+                         "no domain with matching id %d", dom->id);
+        return -1;
+    }
+
+    if (qemudMonitorCommand(driver, vm, "system_powerdown", &info) < 0) {
+        qemudReportError(dom->conn, dom, NULL, VIR_ERR_OPERATION_FAILED,
+                         "shutdown operation failed");
+        return -1;
+    }
+    return 0;
+
+}
+
+
 static int qemudDomainDestroy(virDomainPtr dom) {
     struct qemud_driver *driver = (struct qemud_driver *)dom->conn->privateData;
     struct qemud_vm *vm = qemudFindVMByID(driver, dom->id);
@@ -2855,7 +2876,7 @@ static virDriver qemuDriver = {
     qemudDomainLookupByName, /* domainLookupByName */
     qemudDomainSuspend, /* domainSuspend */
     qemudDomainResume, /* domainResume */
-    qemudDomainDestroy, /* domainShutdown */
+    qemudDomainShutdown, /* domainShutdown */
     NULL, /* domainReboot */
     qemudDomainDestroy, /* domainDestroy */
     qemudDomainGetOSType, /* domainGetOSType */