[PATCH 2/3] migration: Remove zero-blocks capability

Peter Xu posted 3 patches 3 weeks, 4 days ago
Maintainers: Peter Xu <peterx@redhat.com>, Fabiano Rosas <farosas@suse.de>, Eric Blake <eblake@redhat.com>, Markus Armbruster <armbru@redhat.com>
[PATCH 2/3] migration: Remove zero-blocks capability
Posted by Peter Xu 3 weeks, 4 days ago
It was declared deprecated since 9.2.

Signed-off-by: Peter Xu <peterx@redhat.com>
---
 docs/about/deprecated.rst       |  6 ------
 docs/about/removed-features.rst |  6 ++++++
 qapi/migration.json             | 11 +----------
 migration/options.c             |  5 -----
 4 files changed, 7 insertions(+), 21 deletions(-)

diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index b499b2acb0..6e4e2e4833 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -575,12 +575,6 @@ deprecated in favor of explicitly using the ``file:`` URI with the
 file descriptor being passed as an ``fdset``. Refer to the ``add-fd``
 command documentation for details on the ``fdset`` usage.
 
-``zero-blocks`` capability (since 9.2)
-''''''''''''''''''''''''''''''''''''''
-
-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)
 '''''''''''''''''''''''''''''''''''''
 
diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst
index e81d79da47..8a9d21068a 100644
--- a/docs/about/removed-features.rst
+++ b/docs/about/removed-features.rst
@@ -717,6 +717,12 @@ Block migration has been removed. For a replacement, see "QMP
 invocation for live storage migration with ``blockdev-mirror`` + NBD"
 in docs/interop/live-block-operations.rst.
 
+``migrate-set-capabilities`` ``zero-blocks`` option (removed in 11.0)
+'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
+
+The ``zero-blocks`` capability was part of the block migration capability
+that got removed.  Removed with no replacement.
+
 ``migrate-set-parameter`` ``compress-level`` option (removed in 9.1)
 ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
 
diff --git a/qapi/migration.json b/qapi/migration.json
index 3c868efe38..490f72090e 100644
--- a/qapi/migration.json
+++ b/qapi/migration.json
@@ -440,13 +440,6 @@
 #     footprint is mlock()'d on demand or all at once.  Refer to
 #     docs/rdma.txt for usage.  Disabled by default.  (since 2.0)
 #
-# @zero-blocks: During storage migration encode blocks of zeroes
-#     efficiently.  This essentially saves 1MB of zeroes per block on
-#     the wire.  Enabling requires source and target VM to support
-#     this feature.  To enable it is sufficient to enable the
-#     capability on the source VM.  The feature is disabled by
-#     default.  (since 1.6)
-#
 # @events: generate events for each migration state change (since 2.4)
 #
 # @auto-converge: If enabled, QEMU will automatically throttle down
@@ -531,13 +524,12 @@
 #
 # @unstable: Members @x-colo and @x-ignore-shared are experimental.
 #
-# @deprecated: Member @zero-blocks and @x-colo are deprecated.
+# @deprecated: Member @x-colo is deprecated.
 #
 # Since: 1.2
 ##
 { 'enum': 'MigrationCapability',
   'data': ['xbzrle', 'rdma-pin-all', 'auto-converge',
-           { 'name': 'zero-blocks', 'features': [ 'deprecated' ] },
            'events', 'postcopy-ram',
            { 'name': 'x-colo', 'features': [ 'unstable', 'deprecated' ] },
            'release-ram',
@@ -594,7 +586,6 @@
 #           {"state": false, "capability": "xbzrle"},
 #           {"state": false, "capability": "rdma-pin-all"},
 #           {"state": false, "capability": "auto-converge"},
-#           {"state": false, "capability": "zero-blocks"},
 #           {"state": true, "capability": "events"},
 #           {"state": false, "capability": "postcopy-ram"},
 #           {"state": false, "capability": "x-colo"}
diff --git a/migration/options.c b/migration/options.c
index 318850ba94..edb16ad9fa 100644
--- a/migration/options.c
+++ b/migration/options.c
@@ -188,7 +188,6 @@ const Property migration_properties[] = {
     DEFINE_PROP_MIG_CAP("x-xbzrle", MIGRATION_CAPABILITY_XBZRLE),
     DEFINE_PROP_MIG_CAP("x-rdma-pin-all", MIGRATION_CAPABILITY_RDMA_PIN_ALL),
     DEFINE_PROP_MIG_CAP("x-auto-converge", MIGRATION_CAPABILITY_AUTO_CONVERGE),
-    DEFINE_PROP_MIG_CAP("x-zero-blocks", MIGRATION_CAPABILITY_ZERO_BLOCKS),
     DEFINE_PROP_MIG_CAP("x-events", MIGRATION_CAPABILITY_EVENTS),
     DEFINE_PROP_MIG_CAP("x-postcopy-ram", MIGRATION_CAPABILITY_POSTCOPY_RAM),
     DEFINE_PROP_MIG_CAP("x-postcopy-preempt",
@@ -576,10 +575,6 @@ bool migrate_caps_check(bool *old_caps, bool *new_caps, Error **errp)
     ERRP_GUARD();
     MigrationIncomingState *mis = migration_incoming_get_current();
 
-    if (new_caps[MIGRATION_CAPABILITY_ZERO_BLOCKS]) {
-        warn_report("zero-blocks capability is deprecated");
-    }
-
     if (new_caps[MIGRATION_CAPABILITY_X_COLO]) {
         warn_report("COLO migration framework is deprecated");
     }
-- 
2.50.1
Re: [PATCH 2/3] migration: Remove zero-blocks capability
Posted by Markus Armbruster 3 weeks, 4 days ago
Peter Xu <peterx@redhat.com> writes:

> It was declared deprecated since 9.2.
>
> Signed-off-by: Peter Xu <peterx@redhat.com>
> ---
>  docs/about/deprecated.rst       |  6 ------
>  docs/about/removed-features.rst |  6 ++++++
>  qapi/migration.json             | 11 +----------
>  migration/options.c             |  5 -----
>  4 files changed, 7 insertions(+), 21 deletions(-)
>
> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
> index b499b2acb0..6e4e2e4833 100644
> --- a/docs/about/deprecated.rst
> +++ b/docs/about/deprecated.rst
> @@ -575,12 +575,6 @@ deprecated in favor of explicitly using the ``file:`` URI with the
>  file descriptor being passed as an ``fdset``. Refer to the ``add-fd``
>  command documentation for details on the ``fdset`` usage.
>  
> -``zero-blocks`` capability (since 9.2)
> -''''''''''''''''''''''''''''''''''''''
> -
> -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)
>  '''''''''''''''''''''''''''''''''''''
>  
> diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst
> index e81d79da47..8a9d21068a 100644
> --- a/docs/about/removed-features.rst
> +++ b/docs/about/removed-features.rst
> @@ -717,6 +717,12 @@ Block migration has been removed. For a replacement, see "QMP
>  invocation for live storage migration with ``blockdev-mirror`` + NBD"
>  in docs/interop/live-block-operations.rst.
>  
> +``migrate-set-capabilities`` ``zero-blocks`` option (removed in 11.0)
> +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
> +
> +The ``zero-blocks`` capability was part of the block migration capability
> +that got removed.  Removed with no replacement.
> +

Suggest something like

   The ``zero-blocks`` capability was accidentally left behind when
   block migration capability got removed in 9.1.  Removed with no
   replacement.

>  ``migrate-set-parameter`` ``compress-level`` option (removed in 9.1)
>  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
>  

[...]
Re: [PATCH 2/3] migration: Remove zero-blocks capability
Posted by Peter Xu 3 weeks, 3 days ago
On Thu, Jan 15, 2026 at 07:00:45AM +0100, Markus Armbruster wrote:
> Peter Xu <peterx@redhat.com> writes:
> 
> > It was declared deprecated since 9.2.
> >
> > Signed-off-by: Peter Xu <peterx@redhat.com>
> > ---
> >  docs/about/deprecated.rst       |  6 ------
> >  docs/about/removed-features.rst |  6 ++++++
> >  qapi/migration.json             | 11 +----------
> >  migration/options.c             |  5 -----
> >  4 files changed, 7 insertions(+), 21 deletions(-)
> >
> > diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
> > index b499b2acb0..6e4e2e4833 100644
> > --- a/docs/about/deprecated.rst
> > +++ b/docs/about/deprecated.rst
> > @@ -575,12 +575,6 @@ deprecated in favor of explicitly using the ``file:`` URI with the
> >  file descriptor being passed as an ``fdset``. Refer to the ``add-fd``
> >  command documentation for details on the ``fdset`` usage.
> >  
> > -``zero-blocks`` capability (since 9.2)
> > -''''''''''''''''''''''''''''''''''''''
> > -
> > -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)
> >  '''''''''''''''''''''''''''''''''''''
> >  
> > diff --git a/docs/about/removed-features.rst b/docs/about/removed-features.rst
> > index e81d79da47..8a9d21068a 100644
> > --- a/docs/about/removed-features.rst
> > +++ b/docs/about/removed-features.rst
> > @@ -717,6 +717,12 @@ Block migration has been removed. For a replacement, see "QMP
> >  invocation for live storage migration with ``blockdev-mirror`` + NBD"
> >  in docs/interop/live-block-operations.rst.
> >  
> > +``migrate-set-capabilities`` ``zero-blocks`` option (removed in 11.0)
> > +'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
> > +
> > +The ``zero-blocks`` capability was part of the block migration capability
> > +that got removed.  Removed with no replacement.
> > +
> 
> Suggest something like
> 
>    The ``zero-blocks`` capability was accidentally left behind when
>    block migration capability got removed in 9.1.  Removed with no
>    replacement.

Will do.

> 
> >  ``migrate-set-parameter`` ``compress-level`` option (removed in 9.1)
> >  ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
> >  
> 
> [...]
> 

-- 
Peter Xu