qemu-devel
[Top][All Lists]
Advanced

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

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


From: Denis V. Lunev
Subject: Re: [Qemu-devel] [PATCH 7/8] migration: new migration test mode
Date: Thu, 8 Oct 2015 20:05:39 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.3.0

On 10/07/2015 04:56 PM, Dr. David Alan Gilbert wrote:
* Denis V. Lunev (address@hidden) wrote:
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.
Why isn't this just a new transport? i.e. I could do this just by doing
a migrate to test:   ?

It seems simpler and avoids some of the special casing?

Dave
we would like to avoid VM pause in the migration_thread when
the process is finished. Thus we should have a capability
for this in the rest of the code.

Though we can setup the capability here or in the suitable
place and check that capability in the migration thread
using transport here as a distinction.

Will it be OK for you?

Den

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


--
Dr. David Alan Gilbert / address@hidden / Manchester, UK




reply via email to

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