qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Anthony PERARD <anthony.perard@citrix.com>
To: QEMU-devel <qemu-devel@nongnu.org>
Cc: Juan Quintela <quintela@redhat.com>,
	Xen Devel <xen-devel@lists.xen.org>,
	Anthony PERARD <anthony.perard@gmail.com>,
	Stefano Stabellini <stefano.stabellini@citrix.com>,
	Anthony PERARD <anthony.perard@citrix.com>,
	Amit Shah <amit.shah@redhat.com>
Subject: [Qemu-devel] [PATCH RFC 2/3] migration: Fix global state with Xen.
Date: Tue, 28 Jul 2015 16:54:44 +0100	[thread overview]
Message-ID: <1438098885-4339-3-git-send-email-anthony.perard@citrix.com> (raw)
In-Reply-To: <1438098885-4339-1-git-send-email-anthony.perard@citrix.com>

From: Anthony PERARD <anthony.perard@gmail.com>

When doing migration via the QMP command xen_save_devices_state, the
current runstate is not store into the global state section. Also the
current runstate is not the one we want on the receiver side.

During migration, the Xen toolstack paused QEMU before save the devices
state. Also, the toolstack expect QEMU to autostart when the migration is
finished.
So this patch store "running" as it's current runstate.

Signed-off-by: Anthony PERARD <anthony.perard@citrix.com>
---
 include/migration/migration.h | 1 +
 migration/migration.c         | 7 +++++++
 migration/savevm.c            | 1 +
 3 files changed, 9 insertions(+)

diff --git a/include/migration/migration.h b/include/migration/migration.h
index a2f8ed0..8334621 100644
--- a/include/migration/migration.h
+++ b/include/migration/migration.h
@@ -203,4 +203,5 @@ void register_global_state(void);
 void global_state_set_optional(void);
 void savevm_skip_configuration(void);
 int global_state_store(void);
+void global_state_store_running(void);
 #endif
diff --git a/migration/migration.c b/migration/migration.c
index fd4f99b..175a397 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -122,6 +122,13 @@ int global_state_store(void)
     return 0;
 }
 
+void global_state_store_running(void)
+{
+    const char *state = RunState_lookup[RUN_STATE_RUNNING];
+    memcpy((char *)global_state.runstate,
+           state, sizeof(global_state.runstate));
+}
+
 static bool global_state_received(void)
 {
     return global_state.received;
diff --git a/migration/savevm.c b/migration/savevm.c
index 81dbe58..6071215 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -1394,6 +1394,7 @@ void qmp_xen_save_devices_state(const char *filename, Error **errp)
 
     saved_vm_running = runstate_is_running();
     vm_stop(RUN_STATE_SAVE_VM);
+    global_state_store_running();
 
     f = qemu_fopen(filename, "wb");
     if (!f) {
-- 
Anthony PERARD

  parent reply	other threads:[~2015-07-28 15:55 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-07-28 15:54 [Qemu-devel] [PATCH RFC 0/3] Migration regressions with Xen Anthony PERARD
2015-07-28 15:54 ` [Qemu-devel] [PATCH RFC 1/3] migration: Fix regretion for xenfv machine Anthony PERARD
2015-07-28 15:54 ` Anthony PERARD [this message]
2015-07-28 15:54 ` [Qemu-devel] [PATCH RFC 3/3] migration: Add configuration section to vmstate with xen Anthony PERARD
2015-07-29 17:54 ` [Qemu-devel] [PATCH for-2.4 0/3] Migration regressions with Xen Anthony PERARD
2015-07-30 11:06   ` Juan Quintela
2015-07-30 11:24     ` Stefano Stabellini
2015-07-31  9:59       ` Stefano Stabellini
2015-08-03  5:44         ` Amit Shah
2015-08-03  8:36           ` Dr. David Alan Gilbert
2015-08-03  9:37           ` Stefano Stabellini
2015-08-03 12:45             ` Amit Shah

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1438098885-4339-3-git-send-email-anthony.perard@citrix.com \
    --to=anthony.perard@citrix.com \
    --cc=amit.shah@redhat.com \
    --cc=anthony.perard@gmail.com \
    --cc=qemu-devel@nongnu.org \
    --cc=quintela@redhat.com \
    --cc=stefano.stabellini@citrix.com \
    --cc=xen-devel@lists.xen.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).