@@ -43,6 +43,7 @@
#include "exec/ramlist.h"
#include "hw/intc/intc.h"
#include "migration/snapshot.h"
+#include "migration/misc.h"
#ifdef CONFIG_SPICE
#include <spice/enums.h>
@@ -164,6 +165,8 @@ void hmp_info_migrate(Monitor *mon, const QDict *qdict)
info = qmp_query_migrate(NULL);
caps = qmp_query_migrate_capabilities(NULL);
+ migration_global_dump(mon);
+
/* do not display parameters during setup */
if (info->has_status && caps) {
monitor_printf(mon, "capabilities: ");
@@ -54,5 +54,6 @@ bool migration_has_failed(MigrationState *);
/* ...and after the device transmission */
bool migration_in_postcopy_after_devices(MigrationState *);
void migration_only_migratable_set(void);
+void migration_global_dump(Monitor *mon);
#endif
@@ -43,6 +43,7 @@
#include "io/channel-buffer.h"
#include "migration/colo.h"
#include "hw/boards.h"
+#include "monitor/monitor.h"
#define MAX_THROTTLE (32 << 20) /* Migration transfer speed throttling */
@@ -1993,6 +1994,16 @@ void migrate_fd_connect(MigrationState *s)
s->migration_thread_running = true;
}
+void migration_global_dump(Monitor *mon)
+{
+ MigrationState *ms = migrate_get_current();
+
+ monitor_printf(mon, "globals: store-global-state=%d, only_migratable=%d, "
+ "send-configuration=%d, send-section-footer=%d\n",
+ ms->store_global_state, ms->only_migratable,
+ ms->send_configuration, ms->send_section_footer);
+}
+
static Property migration_properties[] = {
DEFINE_PROP_BOOL("store-global-state", MigrationState,
store_global_state, true),
Now we have some globals that can be configured for migration. Dump them in HMP info migration for better debugging. (we can also use this to monitor whether COMPAT fields are applied correctly on compatible machines) Signed-off-by: Peter Xu <peterx@redhat.com> --- hmp.c | 3 +++ include/migration/misc.h | 1 + migration/migration.c | 11 +++++++++++ 3 files changed, 15 insertions(+)