From: Juan Quintela <quintela@redhat.com>
To: qemu-devel@nongnu.org
Cc: amit.shah@redhat.com, "Dr. David Alan Gilbert" <dgilbert@redhat.com>
Subject: [Qemu-devel] [PULL 13/21] Create MigrationIncomingState
Date: Wed, 3 Jun 2015 14:05:49 +0200 [thread overview]
Message-ID: <1433333157-9939-14-git-send-email-quintela@redhat.com> (raw)
In-Reply-To: <1433333157-9939-1-git-send-email-quintela@redhat.com>
From: "Dr. David Alan Gilbert" <dgilbert@redhat.com>
There are currently lots of pieces of incoming migration state scattered
around, and postcopy is adding more, and it seems better to try and keep
it together.
allocate MIS in process_incoming_migration_co
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
Reviewed-by: Amit Shah <amit.shah@redhat.com>
Reviewed-by: David Gibson <david@gibson.dropbear.id.au>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Juan Quintela <quintela@redhat.com>
---
include/migration/migration.h | 9 +++++++++
include/qemu/typedefs.h | 1 +
migration/migration.c | 28 ++++++++++++++++++++++++++++
migration/savevm.c | 2 ++
4 files changed, 40 insertions(+)
diff --git a/include/migration/migration.h b/include/migration/migration.h
index b78a3b9..1323e3d 100644
--- a/include/migration/migration.h
+++ b/include/migration/migration.h
@@ -42,6 +42,15 @@ struct MigrationParams {
typedef struct MigrationState MigrationState;
+/* State for the incoming migration */
+struct MigrationIncomingState {
+ QEMUFile *file;
+};
+
+MigrationIncomingState *migration_incoming_get_current(void);
+MigrationIncomingState *migration_incoming_state_new(QEMUFile *f);
+void migration_incoming_state_destroy(void);
+
struct MigrationState
{
int64_t bandwidth_limit;
diff --git a/include/qemu/typedefs.h b/include/qemu/typedefs.h
index cde3314..74dfad3 100644
--- a/include/qemu/typedefs.h
+++ b/include/qemu/typedefs.h
@@ -38,6 +38,7 @@ typedef struct MemoryListener MemoryListener;
typedef struct MemoryMappingList MemoryMappingList;
typedef struct MemoryRegion MemoryRegion;
typedef struct MemoryRegionSection MemoryRegionSection;
+typedef struct MigrationIncomingState MigrationIncomingState;
typedef struct MigrationParams MigrationParams;
typedef struct Monitor Monitor;
typedef struct MouseTransformInfo MouseTransformInfo;
diff --git a/migration/migration.c b/migration/migration.c
index 438bf91..66c0b57 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -53,6 +53,7 @@ static bool deferred_incoming;
migrations at once. For now we don't need to add
dynamic creation of migration */
+/* For outgoing */
MigrationState *migrate_get_current(void)
{
static MigrationState current_migration = {
@@ -71,6 +72,28 @@ MigrationState *migrate_get_current(void)
return ¤t_migration;
}
+/* For incoming */
+static MigrationIncomingState *mis_current;
+
+MigrationIncomingState *migration_incoming_get_current(void)
+{
+ return mis_current;
+}
+
+MigrationIncomingState *migration_incoming_state_new(QEMUFile* f)
+{
+ mis_current = g_malloc0(sizeof(MigrationIncomingState));
+ mis_current->file = f;
+
+ return mis_current;
+}
+
+void migration_incoming_state_destroy(void)
+{
+ g_free(mis_current);
+ mis_current = NULL;
+}
+
/*
* Called on -incoming with a defer: uri.
* The migration can be started later after any parameters have been
@@ -115,9 +138,14 @@ static void process_incoming_migration_co(void *opaque)
Error *local_err = NULL;
int ret;
+ migration_incoming_state_new(f);
+
ret = qemu_loadvm_state(f);
+
qemu_fclose(f);
free_xbzrle_decoded_buf();
+ migration_incoming_state_destroy();
+
if (ret < 0) {
error_report("load of migration failed: %s", strerror(-ret));
migrate_decompress_threads_join();
diff --git a/migration/savevm.c b/migration/savevm.c
index 903dbeb..d0991e8 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -1329,9 +1329,11 @@ int load_vmstate(const char *name)
}
qemu_system_reset(VMRESET_SILENT);
+ migration_incoming_state_new(f);
ret = qemu_loadvm_state(f);
qemu_fclose(f);
+ migration_incoming_state_destroy();
if (ret < 0) {
error_report("Error %d while loading VM state", ret);
return ret;
--
2.4.1
next prev parent reply other threads:[~2015-06-03 12:06 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-06-03 12:05 [Qemu-devel] [PULL 00/21] Migration pull request Juan Quintela
2015-06-03 12:05 ` [Qemu-devel] [PULL 01/21] migration: move ram stuff to migration/ram Juan Quintela
2015-06-03 12:05 ` [Qemu-devel] [PULL 02/21] migration: move savevm.c inside migration/ Juan Quintela
2015-06-03 12:05 ` [Qemu-devel] [PULL 03/21] migration: Add myself to the copyright list of both files Juan Quintela
2015-06-03 12:05 ` [Qemu-devel] [PULL 04/21] migration: reduce include files Juan Quintela
2015-06-03 12:05 ` [Qemu-devel] [PULL 05/21] arch_init: Clean up the duplicate variable 'len' defining in ram_load() Juan Quintela
2015-06-03 12:05 ` [Qemu-devel] [PULL 06/21] rdma: Fix qemu crash when IPv6 address is used for migration Juan Quintela
2015-06-03 12:05 ` [Qemu-devel] [PULL 07/21] migration: Remove duplicated assignment of SETUP status Juan Quintela
2015-06-03 12:05 ` [Qemu-devel] [PULL 08/21] migration: create savevm_state Juan Quintela
2015-06-03 12:05 ` [Qemu-devel] [PULL 09/21] migration: Use normal VMStateDescriptions for Subsections Juan Quintela
2015-06-03 12:05 ` [Qemu-devel] [PULL 10/21] Add qemu_get_counted_string to read a string prefixed by a count byte Juan Quintela
2015-06-03 12:05 ` [Qemu-devel] [PULL 11/21] Split header writing out of qemu_savevm_state_begin Juan Quintela
2015-06-03 12:05 ` [Qemu-devel] [PULL 12/21] qemu_ram_foreach_block: pass up error value, and down the ramblock name Juan Quintela
2015-06-03 12:05 ` Juan Quintela [this message]
2015-06-03 12:05 ` [Qemu-devel] [PULL 14/21] Move copy out of qemu_peek_buffer Juan Quintela
2015-06-03 12:05 ` [Qemu-devel] [PULL 15/21] Move loadvm_handlers into MigrationIncomingState Juan Quintela
2015-06-03 12:05 ` [Qemu-devel] [PULL 16/21] Merge section header writing Juan Quintela
2015-06-03 12:05 ` [Qemu-devel] [PULL 17/21] Disable section footers on older machine types Juan Quintela
2015-06-03 12:05 ` [Qemu-devel] [PULL 18/21] Add a protective section footer Juan Quintela
2015-06-03 12:05 ` [Qemu-devel] [PULL 19/21] Teach analyze-migration.py about section footers Juan Quintela
2015-06-03 12:05 ` [Qemu-devel] [PULL 20/21] Rename RDMA structures to make destination clear Juan Quintela
2015-06-03 12:05 ` [Qemu-devel] [PULL 21/21] Remove unneeded memset Juan Quintela
2015-06-04 11:48 ` [Qemu-devel] [PULL 00/21] Migration pull request Peter Maydell
2015-06-04 13:01 ` Juan Quintela
-- strict thread matches above, loose matches on Subject: below --
2015-06-12 5:03 [Qemu-devel] [PULL v2 00/21] migration " Juan Quintela
2015-06-12 5:03 ` [Qemu-devel] [PULL 13/21] Create MigrationIncomingState Juan Quintela
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=1433333157-9939-14-git-send-email-quintela@redhat.com \
--to=quintela@redhat.com \
--cc=amit.shah@redhat.com \
--cc=dgilbert@redhat.com \
--cc=qemu-devel@nongnu.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).