From: Peter Xu <peterx@redhat.com>
To: qemu-devel@nongnu.org
Cc: Eduardo Habkost <ehabkost@redhat.com>,
Laurent Vivier <lvivier@redhat.com>,
Eric Blake <eblake@redhat.com>,
Markus Armbruster <armbru@redhat.com>,
Juan Quintela <quintela@redhat.com>,
"Dr . David Alan Gilbert" <dgilbert@redhat.com>,
peterx@redhat.com
Subject: [Qemu-devel] [PATCH v6 06/10] migration: move only_migratable to MigrationState
Date: Tue, 27 Jun 2017 12:10:15 +0800 [thread overview]
Message-ID: <1498536619-14548-7-git-send-email-peterx@redhat.com> (raw)
In-Reply-To: <1498536619-14548-1-git-send-email-peterx@redhat.com>
One less global variable, and it does only matter with migration.
We keep the old "--only-migratable" option, but also now we support:
-global migration.only-migratable=true
Currently still keep the old interface.
Hmm, now vl.c has no way to access migrate_get_current(). Export a
function for it to setup only_migratable.
Reviewed-by: Juan Quintela <quintela@redhat.com>
Signed-off-by: Peter Xu <peterx@redhat.com>
---
include/migration/misc.h | 2 ++
include/sysemu/sysemu.h | 1 -
migration/migration.c | 8 +++++++-
migration/migration.h | 3 +++
migration/savevm.c | 2 +-
vl.c | 9 +++++++--
6 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/include/migration/misc.h b/include/migration/misc.h
index 2d36cf5..6ac3307 100644
--- a/include/migration/misc.h
+++ b/include/migration/misc.h
@@ -55,4 +55,6 @@ bool migration_has_finished(MigrationState *);
bool migration_has_failed(MigrationState *);
/* ...and after the device transmission */
bool migration_in_postcopy_after_devices(MigrationState *);
+void migration_only_migratable_set(void);
+
#endif
diff --git a/include/sysemu/sysemu.h b/include/sysemu/sysemu.h
index 9841a52..b213696 100644
--- a/include/sysemu/sysemu.h
+++ b/include/sysemu/sysemu.h
@@ -15,7 +15,6 @@
/* vl.c */
extern const char *bios_name;
-extern int only_migratable;
extern const char *qemu_name;
extern QemuUUID qemu_uuid;
extern bool qemu_uuid_set;
diff --git a/migration/migration.c b/migration/migration.c
index 221b22c..67f9e68 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -115,6 +115,11 @@ MigrationState *migrate_get_current(void)
return current_migration;
}
+void migration_only_migratable_set(void)
+{
+ migrate_get_current()->only_migratable = true;
+}
+
MigrationIncomingState *migration_incoming_get_current(void)
{
static bool once;
@@ -986,7 +991,7 @@ static GSList *migration_blockers;
int migrate_add_blocker(Error *reason, Error **errp)
{
- if (only_migratable) {
+ if (migrate_get_current()->only_migratable) {
error_propagate(errp, error_copy(reason));
error_prepend(errp, "disallowing migration blocker "
"(--only_migratable) for: ");
@@ -1979,6 +1984,7 @@ void migrate_fd_connect(MigrationState *s)
static Property migration_properties[] = {
DEFINE_PROP_BOOL("store-global-state", MigrationState,
store_global_state, true),
+ DEFINE_PROP_BOOL("only-migratable", MigrationState, only_migratable, false),
DEFINE_PROP_END_OF_LIST(),
};
diff --git a/migration/migration.h b/migration/migration.h
index 4b898e9..34377dd 100644
--- a/migration/migration.h
+++ b/migration/migration.h
@@ -139,6 +139,9 @@ struct MigrationState
* during migration.
*/
bool store_global_state;
+
+ /* Whether the VM is only allowing for migratable devices */
+ bool only_migratable;
};
void migrate_set_state(int *state, int old_state, int new_state);
diff --git a/migration/savevm.c b/migration/savevm.c
index c7a49c9..1499cd3 100644
--- a/migration/savevm.c
+++ b/migration/savevm.c
@@ -2336,7 +2336,7 @@ void vmstate_register_ram_global(MemoryRegion *mr)
bool vmstate_check_only_migratable(const VMStateDescription *vmsd)
{
/* check needed if --only-migratable is specified */
- if (!only_migratable) {
+ if (!migrate_get_current()->only_migratable) {
return true;
}
diff --git a/vl.c b/vl.c
index f0a0515..36ff3f4 100644
--- a/vl.c
+++ b/vl.c
@@ -188,7 +188,6 @@ bool boot_strict;
uint8_t *boot_splash_filedata;
size_t boot_splash_filedata_size;
uint8_t qemu_extra_params_fw[2];
-int only_migratable; /* turn it off unless user states otherwise */
int icount_align_option;
@@ -3953,7 +3952,13 @@ int main(int argc, char **argv, char **envp)
incoming = optarg;
break;
case QEMU_OPTION_only_migratable:
- only_migratable = 1;
+ /*
+ * TODO: we can remove this option one day, and we
+ * should all use:
+ *
+ * "-global migration.only-migratable=true"
+ */
+ migration_only_migratable_set();
break;
case QEMU_OPTION_nodefaults:
has_defaults = 0;
--
2.7.4
next prev parent reply other threads:[~2017-06-27 4:10 UTC|newest]
Thread overview: 46+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-27 4:10 [Qemu-devel] [PATCH v6 00/10] migration: objectify MigrationState Peter Xu
2017-06-27 4:10 ` [Qemu-devel] [PATCH v6 01/10] machine: export register_compat_prop() Peter Xu
2017-06-27 14:55 ` Eduardo Habkost
2017-06-27 15:05 ` Eric Blake
2017-06-28 6:57 ` Peter Xu
2017-06-27 4:10 ` [Qemu-devel] [PATCH v6 02/10] accel: introduce AccelClass.global_props Peter Xu
2017-06-27 14:55 ` Eduardo Habkost
2017-06-27 4:10 ` [Qemu-devel] [PATCH v6 03/10] vl: clean up global property registerations Peter Xu
2017-06-27 14:56 ` Eduardo Habkost
2017-06-27 4:10 ` [Qemu-devel] [PATCH v6 04/10] migration: let MigrationState be a qdev Peter Xu
2017-06-27 14:47 ` Eduardo Habkost
2017-06-28 7:01 ` Peter Xu
2017-06-27 14:59 ` Eduardo Habkost
2017-06-30 2:18 ` Max Reitz
2017-06-30 3:03 ` Peter Xu
2017-06-30 7:11 ` Peter Xu
2017-06-30 12:33 ` Max Reitz
2017-06-30 13:05 ` Eric Blake
2017-06-30 13:57 ` Max Reitz
2017-07-03 1:52 ` Peter Xu
2017-06-27 4:10 ` [Qemu-devel] [PATCH v6 05/10] migration: move global_state.optional out Peter Xu
2017-06-28 18:43 ` Eduardo Habkost
2017-06-27 4:10 ` Peter Xu [this message]
2017-06-27 11:15 ` [Qemu-devel] [PATCH v6 06/10] migration: move only_migratable to MigrationState Eric Blake
2017-06-27 13:36 ` Eduardo Habkost
2017-06-28 6:54 ` Peter Xu
2017-06-28 17:46 ` Eduardo Habkost
2017-06-28 19:13 ` Eduardo Habkost
2017-06-29 2:33 ` Peter Xu
2017-06-27 4:10 ` [Qemu-devel] [PATCH v6 07/10] migration: move skip_configuration out Peter Xu
2017-06-28 18:44 ` Eduardo Habkost
2017-06-27 4:10 ` [Qemu-devel] [PATCH v6 08/10] migration: move skip_section_footers Peter Xu
2017-06-28 18:45 ` Eduardo Habkost
2017-06-27 4:10 ` [Qemu-devel] [PATCH v6 09/10] migration: merge enforce_config_section somewhat Peter Xu
2017-06-28 19:06 ` Eduardo Habkost
2017-06-28 22:42 ` Juan Quintela
2017-06-29 3:00 ` Peter Xu
2017-06-29 19:18 ` Eduardo Habkost
2017-06-30 6:10 ` Peter Xu
2017-06-27 4:10 ` [Qemu-devel] [PATCH v6 10/10] migration: hmp: dump globals Peter Xu
2017-06-28 17:12 ` Eduardo Habkost
2017-06-30 6:22 ` Peter Xu
2017-06-28 7:15 ` [Qemu-devel] [PATCH v6 11/10] migration: add comment for TYPE_MIGRATE Peter Xu
2017-06-28 7:37 ` Juan Quintela
2017-06-28 15:37 ` Eduardo Habkost
2017-06-29 3:08 ` Peter Xu
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=1498536619-14548-7-git-send-email-peterx@redhat.com \
--to=peterx@redhat.com \
--cc=armbru@redhat.com \
--cc=dgilbert@redhat.com \
--cc=eblake@redhat.com \
--cc=ehabkost@redhat.com \
--cc=lvivier@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=quintela@redhat.com \
/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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.