[pve-devel] [PATCH] vmstate snapshot : implement cancelled state
Alexandre Derumier
aderumier at odiso.com
Thu Nov 20 14:53:36 CET 2014
currently, if we cancel a active savevm job with savevm-end,
we don't close the vmstate file.
This implement a new state CANCELLED, which is setup if savevm-end is called
when savevm is ACTIVE
then, in the coroutine, if state CANCELLED is detected,
we call save_snapshot_completed() to properly close the file
then qmp_savevm_end to finish the job
Signed-off-by: Alexandre Derumier <aderumier at odiso.com>
---
debian/patches/internal-snapshot-async.patch | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/debian/patches/internal-snapshot-async.patch b/debian/patches/internal-snapshot-async.patch
index 4a6871d..1a606b8 100644
--- a/debian/patches/internal-snapshot-async.patch
+++ b/debian/patches/internal-snapshot-async.patch
@@ -370,7 +370,7 @@ Index: new/savevm-async.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
+++ new/savevm-async.c 2014-08-07 13:29:41.000000000 +0200
-@@ -0,0 +1,488 @@
+@@ -0,0 +1,499 @@
+#include "qemu-common.h"
+#include "qapi/qmp/qerror.h"
+#include "sysemu/sysemu.h"
@@ -384,7 +384,7 @@ Index: new/savevm-async.c
+#include "block/block.h"
+#include "qemu/timer.h"
+
-+/* #define DEBUG_SAVEVM_STATE */
++#define DEBUG_SAVEVM_STATE
+
+#ifdef DEBUG_SAVEVM_STATE
+#define DPRINTF(fmt, ...) \
@@ -399,6 +399,7 @@ Index: new/savevm-async.c
+ SAVE_STATE_ERROR,
+ SAVE_STATE_ACTIVE,
+ SAVE_STATE_COMPLETED,
++ SAVE_STATE_CANCELLED
+};
+
+
@@ -588,6 +589,11 @@ Index: new/savevm-async.c
+ }
+ }
+ }
++ if(snap_state.state == SAVE_STATE_CANCELLED) {
++ save_snapshot_completed();
++ Error *errp = NULL;
++ qmp_savevm_end(&errp);
++ }
+}
+
+static const QEMUFileOps block_file_ops = {
@@ -677,6 +683,11 @@ Index: new/savevm-async.c
+ return;
+ }
+
++ if (snap_state.state == SAVE_STATE_ACTIVE) {
++ snap_state.state = SAVE_STATE_CANCELLED;
++ return;
++ }
++
+ if (snap_state.saved_vm_running) {
+ vm_start();
+ }
--
1.7.10.4
More information about the pve-devel
mailing list