]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Introduce a 'stop' method to virDriverState
authorDaniel P. Berrange <berrange@redhat.com>
Wed, 31 Oct 2012 19:03:52 +0000 (19:03 +0000)
committerDaniel P. Berrange <berrange@redhat.com>
Thu, 29 Nov 2012 16:14:36 +0000 (16:14 +0000)
To allow actions to be performed in libvirtd when the host
shuts down, or user session exits, introduce a 'stop'
method to virDriverState. This will do things like saving
the VM state to a file.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
src/driver.h
src/libvirt.c
src/libvirt_daemon.syms
src/libvirt_internal.h

index 9add96c68f487f899a815a4b633f7ec160566ea9..ea2ecc392dd3c6885a5416613fd3596cad3ac9be 100644 (file)
@@ -1504,6 +1504,7 @@ typedef int (*virDrvStateInitialize) (int privileged);
 typedef int (*virDrvStateCleanup) (void);
 typedef int (*virDrvStateReload) (void);
 typedef int (*virDrvStateActive) (void);
+typedef int (*virDrvStateStop) (void);
 
 typedef struct _virStateDriver virStateDriver;
 typedef virStateDriver *virStateDriverPtr;
@@ -1514,6 +1515,7 @@ struct _virStateDriver {
     virDrvStateCleanup     cleanup;
     virDrvStateReload      reload;
     virDrvStateActive      active;
+    virDrvStateStop        stop;
 };
 # endif
 
index 03c2f941960aa4e4d6cbb76b966210445329294b..7656fca3fe92ed557ffb31b149cccb972ebff9ba 100644 (file)
@@ -869,6 +869,24 @@ int virStateActive(void) {
     return ret;
 }
 
+/**
+ * virStateStop:
+ *
+ * Run each virtualization driver's "stop" method.
+ *
+ * Returns 0 if successful, -1 on failure
+ */
+int virStateStop(void) {
+    int i, ret = 0;
+
+    for (i = 0 ; i < virStateDriverTabCount ; i++) {
+        if (virStateDriverTab[i]->stop &&
+            virStateDriverTab[i]->stop())
+            ret = 1;
+    }
+    return ret;
+}
+
 #endif
 
 
index 7c914fa8e75b80682e14df95a79a13ce7e0c9325..dde77a6da3ccf0cc90c26a98044b70c3732c0cc1 100644 (file)
@@ -8,3 +8,4 @@ virStateActive;
 virStateCleanup;
 virStateInitialize;
 virStateReload;
+virStateStop;
index 71483e4695497c1022d9b20aa9ae5c2bc82e7804..a39aaa41d82198c542ecd62c197c571aaeb745f1 100644 (file)
@@ -32,6 +32,7 @@ int virStateInitialize(int privileged);
 int virStateCleanup(void);
 int virStateReload(void);
 int virStateActive(void);
+int virStateStop(void);
 # endif
 
 /* Feature detection.  This is a libvirt-private interface for determining