COLO was broken for QEMU release 10.0/10.1 without anyone noticed.  One
reason might be that we don't have an unit test for COLO (which we
explicitly require now for any new migration feature).  The other reason
should be that there are just no more active COLO users, at least based on
the latest development of QEMU.

I don't remember seeing anything really active in the past few years in
COLO development.

Meanwhile, COLO migration framework maintainer (Hailiang Zhang)'s last
email to qemu-devel is in Dec 2021 where the patch proposed an email
change (<[email protected]>).

We've discussed this for a while, see latest discussions here (our thoughts
of deprecating COLO framework might be earlier than that, but still):

https://lore.kernel.org/r/[email protected]/
https://lore.kernel.org/r/[email protected]

Let's make it partly official and put COLO into deprecation list.  If
anyone cares about COLO and is deploying it, please send an email to
qemu-devel to discuss.

Otherwise, let's try to save some energy for either maintainers or
developers who is looking after QEMU. Let's save the work if we don't even
know what the work is for.

Cc: Lukáš Doktor <[email protected]>
Cc: Juan Quintela <[email protected]>
Cc: Dr. David Alan Gilbert <[email protected]>
Cc: Zhang Chen <[email protected]>
Cc: [email protected]
Cc: Li Zhijian <[email protected]>
Cc: Jason Wang <[email protected]>
Signed-off-by: Peter Xu <[email protected]>
---
 docs/about/deprecated.rst | 6 ++++++
 qapi/migration.json       | 5 ++---
 migration/options.c       | 4 ++++
 3 files changed, 12 insertions(+), 3 deletions(-)

diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index 7abb3dab59..b499b2acb0 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -580,3 +580,9 @@ command documentation for details on the ``fdset`` usage.
 
 The ``zero-blocks`` capability was part of the block migration which
 doesn't exist anymore since it was removed in QEMU v9.1.
+
+COLO migration framework (since 11.0)
+'''''''''''''''''''''''''''''''''''''
+
+To be removed with no replacement, as the COLO migration framework doesn't
+seem to have any active user for a while.
diff --git a/qapi/migration.json b/qapi/migration.json
index 201dedd982..3c868efe38 100644
--- a/qapi/migration.json
+++ b/qapi/migration.json
@@ -531,8 +531,7 @@
 #
 # @unstable: Members @x-colo and @x-ignore-shared are experimental.
 #
-# @deprecated: Member @zero-blocks is deprecated as being part of
-#     block migration which was already removed.
+# @deprecated: Member @zero-blocks and @x-colo are deprecated.
 #
 # Since: 1.2
 ##
@@ -540,7 +539,7 @@
   'data': ['xbzrle', 'rdma-pin-all', 'auto-converge',
            { 'name': 'zero-blocks', 'features': [ 'deprecated' ] },
            'events', 'postcopy-ram',
-           { 'name': 'x-colo', 'features': [ 'unstable' ] },
+           { 'name': 'x-colo', 'features': [ 'unstable', 'deprecated' ] },
            'release-ram',
            'return-path', 'pause-before-switchover', 'multifd',
            'dirty-bitmaps', 'postcopy-blocktime', 'late-block-activate',
diff --git a/migration/options.c b/migration/options.c
index 9a5a39c886..318850ba94 100644
--- a/migration/options.c
+++ b/migration/options.c
@@ -580,6 +580,10 @@ bool migrate_caps_check(bool *old_caps, bool *new_caps, 
Error **errp)
         warn_report("zero-blocks capability is deprecated");
     }
 
+    if (new_caps[MIGRATION_CAPABILITY_X_COLO]) {
+        warn_report("COLO migration framework is deprecated");
+    }
+
 #ifndef CONFIG_REPLICATION
     if (new_caps[MIGRATION_CAPABILITY_X_COLO]) {
         error_setg(errp, "QEMU compiled without replication module"
-- 
2.50.1


Reply via email to