qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 7/8] migration: new migration test mode


From: Denis V. Lunev
Subject: [Qemu-devel] [PATCH 7/8] migration: new migration test mode
Date: Wed, 7 Oct 2015 09:20:45 +0300

From: Igor Redko <address@hidden>

In this patch the ability to start a migration with test-only
capability was added. It allows to gather the guest VM’s memory
usage statistics avoiding time and memory overheads and real
data transmission.  New MIGRATION_STATUS_TEST_COMPLETED was
added to distinguish between test migration and true migration
success states.

Signed-off-by: Igor Redko <address@hidden>
Reviewed-by: Anna Melekhova <address@hidden>
Signed-off-by: Denis V. Lunev <address@hidden>
---
 migration/migration.c | 12 ++++++++++--
 qapi-schema.json      |  4 +++-
 2 files changed, 13 insertions(+), 3 deletions(-)

diff --git a/migration/migration.c b/migration/migration.c
index 3182e15..3470d39 100644
--- a/migration/migration.c
+++ b/migration/migration.c
@@ -790,7 +790,9 @@ void qmp_migrate(const char *uri, bool has_blk, bool blk,
 
     s = migrate_init(&params);
 
-    if (strstart(uri, "tcp:", &p)) {
+    if (migrate_is_test()) {
+        test_start_migration(s, p, &local_err);
+    } else if (strstart(uri, "tcp:", &p)) {
         tcp_start_outgoing_migration(s, p, &local_err);
 #ifdef CONFIG_RDMA
     } else if (strstart(uri, "rdma:", &p)) {
@@ -1054,8 +1056,14 @@ static void *migration_thread(void *opaque)
         }
 
         if (qemu_file_get_error(s->file)) {
-            migrate_set_state(s, MIGRATION_STATUS_ACTIVE,
+            /*FIXME replace magic number with smth legit*/
+            if (migrate_is_test() && qemu_file_get_error(s->file) == -42) {
+                migrate_set_state(s, MIGRATION_STATUS_ACTIVE,
+                              MIGRATION_STATUS_TEST_COMPLETED);
+            } else {
+                migrate_set_state(s, MIGRATION_STATUS_ACTIVE,
                               MIGRATION_STATUS_FAILED);
+            }
             break;
         }
 
diff --git a/qapi-schema.json b/qapi-schema.json
index 38bf199..e022f9c 100644
--- a/qapi-schema.json
+++ b/qapi-schema.json
@@ -432,6 +432,8 @@
 #
 # @completed: migration is finished.
 #
+# @test-completed: migration time estimation finished.
+#
 # @failed: some error occurred during migration process.
 #
 # Since: 2.3
@@ -439,7 +441,7 @@
 ##
 { 'enum': 'MigrationStatus',
   'data': [ 'none', 'setup', 'cancelling', 'cancelled',
-            'active', 'completed', 'failed' ] }
+            'active', 'completed', 'test-completed', 'failed' ] }
 
 ##
 # @MigrationInfo
-- 
2.1.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]