Browse Source

migration: block incoming colo when capability is disabled

We generally require same set of capabilities on source and target.
Let's require x-colo capability to use COLO on target.

Signed-off-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru>
Reviewed-by: Juan Quintela <quintela@redhat.com>
Reviewed-by: Peter Xu <peterx@redhat.com>
Reviewed-by: Lukas Straub <lukasstraub2@web.de>
Reviewed-by: Zhang Chen <chen.zhang@intel.com>
Message-Id: <20230428194928.1426370-11-vsementsov@yandex-team.ru>
Signed-off-by: Juan Quintela <quintela@redhat.com>
Vladimir Sementsov-Ogievskiy 2 years ago
parent
commit
121ccedc2b
2 changed files with 7 additions and 0 deletions
  1. 1 0
      docs/COLO-FT.txt
  2. 6 0
      migration/migration.c

+ 1 - 0
docs/COLO-FT.txt

@@ -210,6 +210,7 @@ children.0=childs0 \
 
 
 3. On Secondary VM's QEMU monitor, issue command
 3. On Secondary VM's QEMU monitor, issue command
 {"execute":"qmp_capabilities"}
 {"execute":"qmp_capabilities"}
+{"execute": "migrate-set-capabilities", "arguments": {"capabilities": [ {"capability": "x-colo", "state": true } ] } }
 {"execute": "nbd-server-start", "arguments": {"addr": {"type": "inet", "data": {"host": "0.0.0.0", "port": "9999"} } } }
 {"execute": "nbd-server-start", "arguments": {"addr": {"type": "inet", "data": {"host": "0.0.0.0", "port": "9999"} } } }
 {"execute": "nbd-server-add", "arguments": {"device": "parent0", "writable": true } }
 {"execute": "nbd-server-add", "arguments": {"device": "parent0", "writable": true } }
 
 

+ 6 - 0
migration/migration.c

@@ -398,6 +398,12 @@ int migration_incoming_enable_colo(void)
     return -ENOTSUP;
     return -ENOTSUP;
 #endif
 #endif
 
 
+    if (!migrate_colo()) {
+        error_report("ENABLE_COLO command come in migration stream, but c-colo "
+                     "capability is not set");
+        return -EINVAL;
+    }
+
     if (ram_block_discard_disable(true)) {
     if (ram_block_discard_disable(true)) {
         error_report("COLO: cannot disable RAM discard");
         error_report("COLO: cannot disable RAM discard");
         return -EBUSY;
         return -EBUSY;