Signed-off-by: Juan Quintela <quintela@redhat.com>
---
docs/about/deprecated.rst | 8 ++++
qapi/migration.json | 92 ++++++++++++++++++++++++---------------
migration/options.c | 13 ++++++
3 files changed, 79 insertions(+), 34 deletions(-)
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index 173c5ba5cb..fe7f2bbde8 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -460,3 +460,11 @@ block migration (since 8.1)
Block migration is too inflexible. It needs to migrate all block
devices or none. Use driver_mirror+NBD instead.
+old compression method (since 8.1)
+''''''''''''''''''''''''''''''''''
+
+Compression method fails too much. Too many races. We are going to
+remove it if nobody fixes it. For starters, migration-test
+compression tests are disabled becase they hand randomly. If you need
+compression, use multifd compression methods.
+
diff --git a/qapi/migration.json b/qapi/migration.json
index a8497de48d..40a8b5d124 100644
--- a/qapi/migration.json
+++ b/qapi/migration.json
@@ -244,6 +244,7 @@
#
# @compression: migration compression statistics, only returned if
# compression feature is on and status is 'active' or 'completed'
+# It is obsolete and deprecated. Use multifd compression methods.
# (Since 3.1)
#
# @socket-address: Only used for tcp, to know what the real port is
@@ -261,7 +262,8 @@
# Features:
#
# @deprecated: @disk migration is deprecated. Use driver_mirror+NBD
-# instead.
+# instead. @compression is obsolete use multifd compression
+# methods instead.
#
# Since: 0.14
##
@@ -279,7 +281,7 @@
'*blocked-reasons': ['str'],
'*postcopy-blocktime': 'uint32',
'*postcopy-vcpu-blocktime': ['uint32'],
- '*compression': 'CompressionStats',
+ '*compression': { 'type': 'CompressionStats', 'features': ['deprecated'] },
'*socket-address': ['SocketAddress'] } }
##
@@ -432,7 +434,8 @@
# compress and xbzrle are both on, compress only takes effect in
# the ram bulk stage, after that, it will be disabled and only
# xbzrle takes effect, this can help to minimize migration
-# traffic. The feature is disabled by default. (since 2.4 )
+# traffic. The feature is disabled by default. Obsolete. Use
+# multifd compression methods if needed. (since 2.4 )
#
# @events: generate events for each migration state change (since 2.4
# )
@@ -503,6 +506,7 @@
# Features:
#
# @deprecated: @block migration is deprecated. Use driver_mirror+NBD
+# instead. @compress is obsolete use multifd compression methods
# instead.
#
# @unstable: Members @x-colo and @x-ignore-shared are experimental.
@@ -511,7 +515,8 @@
##
{ 'enum': 'MigrationCapability',
'data': ['xbzrle', 'rdma-pin-all', 'auto-converge', 'zero-blocks',
- 'compress', 'events', 'postcopy-ram',
+ { 'name': 'compress', 'features': [ 'deprecated' ] },
+ 'events', 'postcopy-ram',
{ 'name': 'x-colo', 'features': [ 'unstable' ] },
'release-ram',
{ 'name': 'block', 'features': [ 'deprecated' ] },
@@ -671,22 +676,24 @@
# migration, the compression level is an integer between 0 and 9,
# where 0 means no compression, 1 means the best compression
# speed, and 9 means best compression ratio which will consume
-# more CPU.
+# more CPU. Obsolete, see multifd compression if needed.
#
# @compress-threads: Set compression thread count to be used in live
# migration, the compression thread count is an integer between 1
-# and 255.
+# and 255. Obsolete, see multifd compression if needed.
#
# @compress-wait-thread: Controls behavior when all compression
# threads are currently busy. If true (default), wait for a free
# compression thread to become available; otherwise, send the page
-# uncompressed. (Since 3.1)
+# uncompressed. Obsolete, see multifd compression if
+# needed. (Since 3.1)
#
# @decompress-threads: Set decompression thread count to be used in
# live migration, the decompression thread count is an integer
# between 1 and 255. Usually, decompression is at least 4 times as
# fast as compression, so set the decompress-threads to the number
-# about 1/4 of compress-threads is adequate.
+# about 1/4 of compress-threads is adequate. Obsolete, see multifd
+# compression if needed.
#
# @throttle-trigger-threshold: The ratio of bytes_dirty_period and
# bytes_xfer_period to trigger throttling. It is expressed as
@@ -799,7 +806,9 @@
# Features:
#
# @deprecated: Member @block-incremental is obsolete. Use
-# driver_mirror+NBD instead.
+# driver_mirror+NBD instead. Compression is obsolete, so members
+# @compress-level, @compress-threads, @decompress-threads and
+# @compress-wait-thread should not be used.
#
# @unstable: Member @x-checkpoint-delay is experimental.
#
@@ -808,8 +817,11 @@
{ 'enum': 'MigrationParameter',
'data': ['announce-initial', 'announce-max',
'announce-rounds', 'announce-step',
- 'compress-level', 'compress-threads', 'decompress-threads',
- 'compress-wait-thread', 'throttle-trigger-threshold',
+ { 'name': 'compress-level', 'features': [ 'deprecated' ] },
+ { 'name': 'compress-threads', 'features': [ 'deprecated' ] },
+ { 'name': 'decompress-threads', 'features': [ 'deprecated' ] },
+ { 'name': 'compress-wait-thread', 'features': [ 'deprecated' ] },
+ 'throttle-trigger-threshold',
'cpu-throttle-initial', 'cpu-throttle-increment',
'cpu-throttle-tailslow',
'tls-creds', 'tls-hostname', 'tls-authz', 'max-bandwidth',
@@ -837,16 +849,17 @@
# @announce-step: Increase in delay (in milliseconds) between
# subsequent packets in the announcement (Since 4.0)
#
-# @compress-level: compression level
+# @compress-level: compression level. Obsolete and deprecated.
#
-# @compress-threads: compression thread count
+# @compress-threads: compression thread count. Obsolete and deprecated.
#
# @compress-wait-thread: Controls behavior when all compression
# threads are currently busy. If true (default), wait for a free
# compression thread to become available; otherwise, send the page
-# uncompressed. (Since 3.1)
+# uncompressed. Obsolete and deprecated. (Since 3.1)
#
-# @decompress-threads: decompression thread count
+# @decompress-threads: decompression thread count. Obsolete and
+# deprecated.
#
# @throttle-trigger-threshold: The ratio of bytes_dirty_period and
# bytes_xfer_period to trigger throttling. It is expressed as
@@ -958,7 +971,9 @@
# Features:
#
# @deprecated: Member @block-incremental is obsolete. Use
-# driver_mirror+NBD instead.
+# driver_mirror+NBD instead. Compression is obsolete, so members
+# @compress-level, @compress-threads, @decompress-threads and
+# @compress-wait-thread should not be used.
#
# @unstable: Member @x-checkpoint-delay is experimental.
#
@@ -972,10 +987,14 @@
'*announce-max': 'size',
'*announce-rounds': 'size',
'*announce-step': 'size',
- '*compress-level': 'uint8',
- '*compress-threads': 'uint8',
- '*compress-wait-thread': 'bool',
- '*decompress-threads': 'uint8',
+ '*compress-level': { 'type': 'uint8',
+ 'features': [ 'deprecated' ] },
+ '*compress-threads': { 'type': 'uint8',
+ 'features': [ 'deprecated' ] },
+ '*compress-wait-thread': { 'type': 'bool',
+ 'features': [ 'deprecated' ] },
+ '*decompress-threads': { 'type': 'uint8',
+ 'features': [ 'deprecated' ] },
'*throttle-trigger-threshold': 'uint8',
'*cpu-throttle-initial': 'uint8',
'*cpu-throttle-increment': 'uint8',
@@ -1008,7 +1027,7 @@
# Example:
#
# -> { "execute": "migrate-set-parameters" ,
-# "arguments": { "compress-level": 1 } }
+# "arguments": { "multifd-channels": 5 } }
# <- { "return": {} }
##
{ 'command': 'migrate-set-parameters', 'boxed': true,
@@ -1031,16 +1050,18 @@
# @announce-step: Increase in delay (in milliseconds) between
# subsequent packets in the announcement (Since 4.0)
#
-# @compress-level: compression level
+# @compress-level: compression level. Obsolete and deprecated.
#
-# @compress-threads: compression thread count
+# @compress-threads: compression thread count. Obsolote and
+# deprecated.
#
# @compress-wait-thread: Controls behavior when all compression
# threads are currently busy. If true (default), wait for a free
# compression thread to become available; otherwise, send the page
-# uncompressed. (Since 3.1)
+# uncompressed. Obsolete and deprecated. (Since 3.1)
#
-# @decompress-threads: decompression thread count
+# @decompress-threads: decompression thread count. Obsolete and
+# deprecated.
#
# @throttle-trigger-threshold: The ratio of bytes_dirty_period and
# bytes_xfer_period to trigger throttling. It is expressed as
@@ -1154,7 +1175,9 @@
# Features:
#
# @deprecated: Member @block-incremental is obsolete. Use
-# driver_mirror+NBD instead.
+# driver_mirror+NBD instead. Compression is obsolete, so members
+# @compress-level, @compress-threads, @decompress-threads and
+# @compress-wait-thread should not be used.
#
# @unstable: Member @x-checkpoint-delay is experimental.
#
@@ -1165,10 +1188,14 @@
'*announce-max': 'size',
'*announce-rounds': 'size',
'*announce-step': 'size',
- '*compress-level': 'uint8',
- '*compress-threads': 'uint8',
- '*compress-wait-thread': 'bool',
- '*decompress-threads': 'uint8',
+ '*compress-level': { 'type': 'uint8',
+ 'features': [ 'deprecated' ] },
+ '*compress-threads': { 'type': 'uint8',
+ 'features': [ 'deprecated' ] },
+ '*compress-wait-thread': { 'type': 'bool',
+ 'features': [ 'deprecated' ] },
+ '*decompress-threads': { 'type': 'uint8',
+ 'features': [ 'deprecated' ] },
'*throttle-trigger-threshold': 'uint8',
'*cpu-throttle-initial': 'uint8',
'*cpu-throttle-increment': 'uint8',
@@ -1182,7 +1209,6 @@
'features': [ 'unstable' ] },
'*block-incremental': { 'type': 'bool',
'features': [ 'deprecated' ] },
- '*block-incremental': 'bool',
'*multifd-channels': 'uint8',
'*xbzrle-cache-size': 'size',
'*max-postcopy-bandwidth': 'size',
@@ -1205,10 +1231,8 @@
#
# -> { "execute": "query-migrate-parameters" }
# <- { "return": {
-# "decompress-threads": 2,
+# "multifd-channels": 2,
# "cpu-throttle-increment": 10,
-# "compress-threads": 8,
-# "compress-level": 1,
# "cpu-throttle-initial": 20,
# "max-bandwidth": 33554432,
# "downtime-limit": 300
diff --git a/migration/options.c b/migration/options.c
index 374dc0767e..c04e62ba2d 100644
--- a/migration/options.c
+++ b/migration/options.c
@@ -443,6 +443,11 @@ bool migrate_caps_check(bool *old_caps, bool *new_caps, Error **errp)
"Use driver_mirror+NBD instead.");
}
+ if (new_caps[MIGRATION_CAPABILITY_BLOCK]) {
+ warn_report("Old compression method is deprecated. "
+ "Use multifd compression methods instead.");
+ }
+
#ifndef CONFIG_REPLICATION
if (new_caps[MIGRATION_CAPABILITY_X_COLO]) {
error_setg(errp, "QEMU compiled without replication module"
@@ -1196,18 +1201,26 @@ static void migrate_params_apply(MigrateSetParameters *params, Error **errp)
/* TODO use QAPI_CLONE() instead of duplicating it inline */
if (params->has_compress_level) {
+ warn_report("Old compression is deprecated. "
+ "Use multifd compression methods instead.");
s->parameters.compress_level = params->compress_level;
}
if (params->has_compress_threads) {
+ warn_report("Old compression is deprecated. "
+ "Use multifd compression methods instead.");
s->parameters.compress_threads = params->compress_threads;
}
if (params->has_compress_wait_thread) {
+ warn_report("Old compression is deprecated. "
+ "Use multifd compression methods instead.");
s->parameters.compress_wait_thread = params->compress_wait_thread;
}
if (params->has_decompress_threads) {
+ warn_report("Old compression is deprecated. "
+ "Use multifd compression methods instead.");
s->parameters.decompress_threads = params->decompress_threads;
}
--
2.40.1
On Mon, Jun 12, 2023 at 09:33:44PM +0200, Juan Quintela wrote:
> Signed-off-by: Juan Quintela <quintela@redhat.com>
> ---
> docs/about/deprecated.rst | 8 ++++
> qapi/migration.json | 92 ++++++++++++++++++++++++---------------
> migration/options.c | 13 ++++++
> 3 files changed, 79 insertions(+), 34 deletions(-)
>
> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
> index 173c5ba5cb..fe7f2bbde8 100644
> --- a/docs/about/deprecated.rst
> +++ b/docs/about/deprecated.rst
> @@ -460,3 +460,11 @@ block migration (since 8.1)
> Block migration is too inflexible. It needs to migrate all block
> devices or none. Use driver_mirror+NBD instead.
>
> +old compression method (since 8.1)
> +''''''''''''''''''''''''''''''''''
> +
> +Compression method fails too much. Too many races. We are going to
> +remove it if nobody fixes it. For starters, migration-test
> +compression tests are disabled becase they hand randomly. If you need
> +compression, use multifd compression methods.
> +
> diff --git a/qapi/migration.json b/qapi/migration.json
> index a8497de48d..40a8b5d124 100644
> --- a/qapi/migration.json
> +++ b/qapi/migration.json
> @@ -244,6 +244,7 @@
> #
> # @compression: migration compression statistics, only returned if
> # compression feature is on and status is 'active' or 'completed'
> +# It is obsolete and deprecated. Use multifd compression methods.
> # (Since 3.1)
This doesn't give users an indication /why/ we're saying this. Instead
I'd suggest
This feature is unreliable and not tested. It is recommended to
use multifd migration instead, which offers an alternative reliable
and tested compression implementation.
> #
> # @socket-address: Only used for tcp, to know what the real port is
> @@ -261,7 +262,8 @@
> # Features:
> #
> # @deprecated: @disk migration is deprecated. Use driver_mirror+NBD
> -# instead.
> +# instead. @compression is obsolete use multifd compression
> +# methods instead.
For @deprecated, are we supposed to list multiple things at once, or
use a separate @deprecated tag for each one ?
Again I'd suggest rewording
@compression is unreliable and untested. It is recommended to
use multifd migration, which offers an alternative compression
implementation that is reliable and tested.
> diff --git a/migration/options.c b/migration/options.c
> index 374dc0767e..c04e62ba2d 100644
> --- a/migration/options.c
> +++ b/migration/options.c
> @@ -443,6 +443,11 @@ bool migrate_caps_check(bool *old_caps, bool *new_caps, Error **errp)
> "Use driver_mirror+NBD instead.");
> }
>
> + if (new_caps[MIGRATION_CAPABILITY_BLOCK]) {
Surely MIGRATION_CAPABILITY_COMPRESS not BLOCK ?
> + warn_report("Old compression method is deprecated. "
> + "Use multifd compression methods instead.");
> + }
> +
> #ifndef CONFIG_REPLICATION
> if (new_caps[MIGRATION_CAPABILITY_X_COLO]) {
> error_setg(errp, "QEMU compiled without replication module"
> @@ -1196,18 +1201,26 @@ static void migrate_params_apply(MigrateSetParameters *params, Error **errp)
> /* TODO use QAPI_CLONE() instead of duplicating it inline */
>
> if (params->has_compress_level) {
> + warn_report("Old compression is deprecated. "
> + "Use multifd compression methods instead.");
> s->parameters.compress_level = params->compress_level;
> }
>
> if (params->has_compress_threads) {
> + warn_report("Old compression is deprecated. "
> + "Use multifd compression methods instead.");
> s->parameters.compress_threads = params->compress_threads;
> }
>
> if (params->has_compress_wait_thread) {
> + warn_report("Old compression is deprecated. "
> + "Use multifd compression methods instead.");
> s->parameters.compress_wait_thread = params->compress_wait_thread;
> }
>
> if (params->has_decompress_threads) {
> + warn_report("Old compression is deprecated. "
> + "Use multifd compression methods instead.");
> s->parameters.decompress_threads = params->decompress_threads;
> }
>
> --
> 2.40.1
>
With regards,
Daniel
--
|: https://berrange.com -o- https://www.flickr.com/photos/dberrange :|
|: https://libvirt.org -o- https://fstop138.berrange.com :|
|: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
Daniel P. Berrangé <berrange@redhat.com> wrote:
> On Mon, Jun 12, 2023 at 09:33:44PM +0200, Juan Quintela wrote:
>> Signed-off-by: Juan Quintela <quintela@redhat.com>
>> ---
>> docs/about/deprecated.rst | 8 ++++
>> qapi/migration.json | 92 ++++++++++++++++++++++++---------------
>> migration/options.c | 13 ++++++
>> 3 files changed, 79 insertions(+), 34 deletions(-)
>>
>> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
>> index 173c5ba5cb..fe7f2bbde8 100644
>> --- a/docs/about/deprecated.rst
>> +++ b/docs/about/deprecated.rst
>> @@ -460,3 +460,11 @@ block migration (since 8.1)
>> Block migration is too inflexible. It needs to migrate all block
>> devices or none. Use driver_mirror+NBD instead.
>>
>> +old compression method (since 8.1)
>> +''''''''''''''''''''''''''''''''''
>> +
>> +Compression method fails too much. Too many races. We are going to
>> +remove it if nobody fixes it. For starters, migration-test
>> +compression tests are disabled becase they hand randomly. If you need
>> +compression, use multifd compression methods.
>> +
>> diff --git a/qapi/migration.json b/qapi/migration.json
>> index a8497de48d..40a8b5d124 100644
>> --- a/qapi/migration.json
>> +++ b/qapi/migration.json
>> @@ -244,6 +244,7 @@
>> #
>> # @compression: migration compression statistics, only returned if
>> # compression feature is on and status is 'active' or 'completed'
>> +# It is obsolete and deprecated. Use multifd compression methods.
>> # (Since 3.1)
>
> This doesn't give users an indication /why/ we're saying this. Instead
> I'd suggest
>
> This feature is unreliable and not tested. It is recommended to
> use multifd migration instead, which offers an alternative reliable
> and tested compression implementation.
Much better. Done, thanks.
>> # @deprecated: @disk migration is deprecated. Use driver_mirror+NBD
>> -# instead.
>> +# instead. @compression is obsolete use multifd compression
>> +# methods instead.
>
> For @deprecated, are we supposed to list multiple things at once, or
> use a separate @deprecated tag for each one ?
# @unstable: Members @x-colo and @x-ignore-shared are experimental.
This is the only example that I found that is similar.
Only one example. Markus?
>
> Again I'd suggest rewording
>
> @compression is unreliable and untested. It is recommended to
> use multifd migration, which offers an alternative compression
> implementation that is reliable and tested.
Done.
>> @@ -443,6 +443,11 @@ bool migrate_caps_check(bool *old_caps, bool *new_caps, Error **errp)
>> "Use driver_mirror+NBD instead.");
>> }
>>
>> + if (new_caps[MIGRATION_CAPABILITY_BLOCK]) {
>
> Surely MIGRATION_CAPABILITY_COMPRESS not BLOCK ?
Good catch. Copy & paste to its best.
Thanks very much.
On 12/06/2023 21.33, Juan Quintela wrote:
> Signed-off-by: Juan Quintela <quintela@redhat.com>
> ---
> docs/about/deprecated.rst | 8 ++++
> qapi/migration.json | 92 ++++++++++++++++++++++++---------------
> migration/options.c | 13 ++++++
> 3 files changed, 79 insertions(+), 34 deletions(-)
>
> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
> index 173c5ba5cb..fe7f2bbde8 100644
> --- a/docs/about/deprecated.rst
> +++ b/docs/about/deprecated.rst
> @@ -460,3 +460,11 @@ block migration (since 8.1)
> Block migration is too inflexible. It needs to migrate all block
> devices or none. Use driver_mirror+NBD instead.
>
> +old compression method (since 8.1)
> +''''''''''''''''''''''''''''''''''
> +
> +Compression method fails too much. Too many races. We are going to
> +remove it if nobody fixes it. For starters, migration-test
> +compression tests are disabled becase they hand randomly. If you need
"because they fail randomly" ?
> +compression, use multifd compression methods.
> +
> diff --git a/qapi/migration.json b/qapi/migration.json
> index a8497de48d..40a8b5d124 100644
> --- a/qapi/migration.json
> +++ b/qapi/migration.json
> @@ -244,6 +244,7 @@
> #
> # @compression: migration compression statistics, only returned if
> # compression feature is on and status is 'active' or 'completed'
> +# It is obsolete and deprecated. Use multifd compression methods.
> # (Since 3.1)
> #
> # @socket-address: Only used for tcp, to know what the real port is
> @@ -261,7 +262,8 @@
> # Features:
> #
> # @deprecated: @disk migration is deprecated. Use driver_mirror+NBD
> -# instead.
> +# instead. @compression is obsolete use multifd compression
Use a dot or comma after "obsolete".
> +# methods instead.
> #
> # Since: 0.14
> ##
> @@ -279,7 +281,7 @@
> '*blocked-reasons': ['str'],
> '*postcopy-blocktime': 'uint32',
> '*postcopy-vcpu-blocktime': ['uint32'],
> - '*compression': 'CompressionStats',
> + '*compression': { 'type': 'CompressionStats', 'features': ['deprecated'] },
> '*socket-address': ['SocketAddress'] } }
>
> ##
> @@ -432,7 +434,8 @@
> # compress and xbzrle are both on, compress only takes effect in
> # the ram bulk stage, after that, it will be disabled and only
> # xbzrle takes effect, this can help to minimize migration
> -# traffic. The feature is disabled by default. (since 2.4 )
> +# traffic. The feature is disabled by default. Obsolete. Use
> +# multifd compression methods if needed. (since 2.4 )
> #
> # @events: generate events for each migration state change (since 2.4
> # )
> @@ -503,6 +506,7 @@
> # Features:
> #
> # @deprecated: @block migration is deprecated. Use driver_mirror+NBD
> +# instead. @compress is obsolete use multifd compression methods
dito
> # instead.
> #
> # @unstable: Members @x-colo and @x-ignore-shared are experimental.
> @@ -511,7 +515,8 @@
> ##
> { 'enum': 'MigrationCapability',
> 'data': ['xbzrle', 'rdma-pin-all', 'auto-converge', 'zero-blocks',
> - 'compress', 'events', 'postcopy-ram',
> + { 'name': 'compress', 'features': [ 'deprecated' ] },
> + 'events', 'postcopy-ram',
> { 'name': 'x-colo', 'features': [ 'unstable' ] },
> 'release-ram',
> { 'name': 'block', 'features': [ 'deprecated' ] },
> @@ -671,22 +676,24 @@
> # migration, the compression level is an integer between 0 and 9,
> # where 0 means no compression, 1 means the best compression
> # speed, and 9 means best compression ratio which will consume
> -# more CPU.
> +# more CPU. Obsolete, see multifd compression if needed.
> #
> # @compress-threads: Set compression thread count to be used in live
> # migration, the compression thread count is an integer between 1
> -# and 255.
> +# and 255. Obsolete, see multifd compression if needed.
> #
> # @compress-wait-thread: Controls behavior when all compression
> # threads are currently busy. If true (default), wait for a free
> # compression thread to become available; otherwise, send the page
> -# uncompressed. (Since 3.1)
> +# uncompressed. Obsolete, see multifd compression if
> +# needed. (Since 3.1)
> #
> # @decompress-threads: Set decompression thread count to be used in
> # live migration, the decompression thread count is an integer
> # between 1 and 255. Usually, decompression is at least 4 times as
> # fast as compression, so set the decompress-threads to the number
> -# about 1/4 of compress-threads is adequate.
> +# about 1/4 of compress-threads is adequate. Obsolete, see multifd
> +# compression if needed.
> #
> # @throttle-trigger-threshold: The ratio of bytes_dirty_period and
> # bytes_xfer_period to trigger throttling. It is expressed as
> @@ -799,7 +806,9 @@
> # Features:
> #
> # @deprecated: Member @block-incremental is obsolete. Use
> -# driver_mirror+NBD instead.
> +# driver_mirror+NBD instead. Compression is obsolete, so members
> +# @compress-level, @compress-threads, @decompress-threads and
> +# @compress-wait-thread should not be used.
> #
> # @unstable: Member @x-checkpoint-delay is experimental.
> #
> @@ -808,8 +817,11 @@
> { 'enum': 'MigrationParameter',
> 'data': ['announce-initial', 'announce-max',
> 'announce-rounds', 'announce-step',
> - 'compress-level', 'compress-threads', 'decompress-threads',
> - 'compress-wait-thread', 'throttle-trigger-threshold',
> + { 'name': 'compress-level', 'features': [ 'deprecated' ] },
> + { 'name': 'compress-threads', 'features': [ 'deprecated' ] },
> + { 'name': 'decompress-threads', 'features': [ 'deprecated' ] },
> + { 'name': 'compress-wait-thread', 'features': [ 'deprecated' ] },
> + 'throttle-trigger-threshold',
> 'cpu-throttle-initial', 'cpu-throttle-increment',
> 'cpu-throttle-tailslow',
> 'tls-creds', 'tls-hostname', 'tls-authz', 'max-bandwidth',
> @@ -837,16 +849,17 @@
> # @announce-step: Increase in delay (in milliseconds) between
> # subsequent packets in the announcement (Since 4.0)
> #
> -# @compress-level: compression level
> +# @compress-level: compression level. Obsolete and deprecated.
> #
> -# @compress-threads: compression thread count
> +# @compress-threads: compression thread count. Obsolete and deprecated.
> #
> # @compress-wait-thread: Controls behavior when all compression
> # threads are currently busy. If true (default), wait for a free
> # compression thread to become available; otherwise, send the page
> -# uncompressed. (Since 3.1)
> +# uncompressed. Obsolete and deprecated. (Since 3.1)
> #
> -# @decompress-threads: decompression thread count
> +# @decompress-threads: decompression thread count. Obsolete and
> +# deprecated.
> #
> # @throttle-trigger-threshold: The ratio of bytes_dirty_period and
> # bytes_xfer_period to trigger throttling. It is expressed as
> @@ -958,7 +971,9 @@
> # Features:
> #
> # @deprecated: Member @block-incremental is obsolete. Use
> -# driver_mirror+NBD instead.
> +# driver_mirror+NBD instead. Compression is obsolete, so members
> +# @compress-level, @compress-threads, @decompress-threads and
> +# @compress-wait-thread should not be used.
> #
> # @unstable: Member @x-checkpoint-delay is experimental.
> #
> @@ -972,10 +987,14 @@
> '*announce-max': 'size',
> '*announce-rounds': 'size',
> '*announce-step': 'size',
> - '*compress-level': 'uint8',
> - '*compress-threads': 'uint8',
> - '*compress-wait-thread': 'bool',
> - '*decompress-threads': 'uint8',
> + '*compress-level': { 'type': 'uint8',
> + 'features': [ 'deprecated' ] },
> + '*compress-threads': { 'type': 'uint8',
> + 'features': [ 'deprecated' ] },
> + '*compress-wait-thread': { 'type': 'bool',
> + 'features': [ 'deprecated' ] },
> + '*decompress-threads': { 'type': 'uint8',
> + 'features': [ 'deprecated' ] },
> '*throttle-trigger-threshold': 'uint8',
> '*cpu-throttle-initial': 'uint8',
> '*cpu-throttle-increment': 'uint8',
> @@ -1008,7 +1027,7 @@
> # Example:
> #
> # -> { "execute": "migrate-set-parameters" ,
> -# "arguments": { "compress-level": 1 } }
> +# "arguments": { "multifd-channels": 5 } }
> # <- { "return": {} }
> ##
> { 'command': 'migrate-set-parameters', 'boxed': true,
> @@ -1031,16 +1050,18 @@
> # @announce-step: Increase in delay (in milliseconds) between
> # subsequent packets in the announcement (Since 4.0)
> #
> -# @compress-level: compression level
> +# @compress-level: compression level. Obsolete and deprecated.
> #
> -# @compress-threads: compression thread count
> +# @compress-threads: compression thread count. Obsolote and
Obsolete
> +# deprecated.
> #
> # @compress-wait-thread: Controls behavior when all compression
> # threads are currently busy. If true (default), wait for a free
> # compression thread to become available; otherwise, send the page
> -# uncompressed. (Since 3.1)
> +# uncompressed. Obsolete and deprecated. (Since 3.1)
> #
> -# @decompress-threads: decompression thread count
> +# @decompress-threads: decompression thread count. Obsolete and
> +# deprecated.
> #
> # @throttle-trigger-threshold: The ratio of bytes_dirty_period and
> # bytes_xfer_period to trigger throttling. It is expressed as
> @@ -1154,7 +1175,9 @@
> # Features:
> #
> # @deprecated: Member @block-incremental is obsolete. Use
> -# driver_mirror+NBD instead.
> +# driver_mirror+NBD instead. Compression is obsolete, so members
> +# @compress-level, @compress-threads, @decompress-threads and
> +# @compress-wait-thread should not be used.
> #
> # @unstable: Member @x-checkpoint-delay is experimental.
> #
> @@ -1165,10 +1188,14 @@
> '*announce-max': 'size',
> '*announce-rounds': 'size',
> '*announce-step': 'size',
> - '*compress-level': 'uint8',
> - '*compress-threads': 'uint8',
> - '*compress-wait-thread': 'bool',
> - '*decompress-threads': 'uint8',
> + '*compress-level': { 'type': 'uint8',
> + 'features': [ 'deprecated' ] },
> + '*compress-threads': { 'type': 'uint8',
> + 'features': [ 'deprecated' ] },
> + '*compress-wait-thread': { 'type': 'bool',
> + 'features': [ 'deprecated' ] },
> + '*decompress-threads': { 'type': 'uint8',
> + 'features': [ 'deprecated' ] },
> '*throttle-trigger-threshold': 'uint8',
> '*cpu-throttle-initial': 'uint8',
> '*cpu-throttle-increment': 'uint8',
> @@ -1182,7 +1209,6 @@
> 'features': [ 'unstable' ] },
> '*block-incremental': { 'type': 'bool',
> 'features': [ 'deprecated' ] },
> - '*block-incremental': 'bool',
That hunk should go into a previous patch, I think.
> '*multifd-channels': 'uint8',
> '*xbzrle-cache-size': 'size',
> '*max-postcopy-bandwidth': 'size',
> @@ -1205,10 +1231,8 @@
> #
> # -> { "execute": "query-migrate-parameters" }
> # <- { "return": {
> -# "decompress-threads": 2,
> +# "multifd-channels": 2,
> # "cpu-throttle-increment": 10,
> -# "compress-threads": 8,
> -# "compress-level": 1,
> # "cpu-throttle-initial": 20,
> # "max-bandwidth": 33554432,
> # "downtime-limit": 300
Thomas
Thomas Huth <thuth@redhat.com> wrote:
> On 12/06/2023 21.33, Juan Quintela wrote:
>> Signed-off-by: Juan Quintela <quintela@redhat.com>
>> ---
>> docs/about/deprecated.rst | 8 ++++
>> qapi/migration.json | 92 ++++++++++++++++++++++++---------------
>> migration/options.c | 13 ++++++
>> 3 files changed, 79 insertions(+), 34 deletions(-)
>> diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
>> index 173c5ba5cb..fe7f2bbde8 100644
>> --- a/docs/about/deprecated.rst
>> +++ b/docs/about/deprecated.rst
>> @@ -460,3 +460,11 @@ block migration (since 8.1)
>> Block migration is too inflexible. It needs to migrate all block
>> devices or none. Use driver_mirror+NBD instead.
>> +old compression method (since 8.1)
>> +''''''''''''''''''''''''''''''''''
>> +
>> +Compression method fails too much. Too many races. We are going to
>> +remove it if nobody fixes it. For starters, migration-test
>> +compression tests are disabled becase they hand randomly. If you need
>
> "because they fail randomly" ?
yeap.
>> # @deprecated: @disk migration is deprecated. Use driver_mirror+NBD
>> -# instead.
>> +# instead. @compression is obsolete use multifd compression
>
> Use a dot or comma after "obsolete".
fixed.
>> @@ -503,6 +506,7 @@
>> # Features:
>> #
>> # @deprecated: @block migration is deprecated. Use driver_mirror+NBD
>> +# instead. @compress is obsolete use multifd compression methods
>
> dito
fixed.
>> -# @compress-threads: compression thread count
>> +# @compress-threads: compression thread count. Obsolote and
>
> Obsolete
Fixed.
>> @@ -1182,7 +1209,6 @@
>> 'features': [ 'unstable' ] },
>> '*block-incremental': { 'type': 'bool',
>> 'features': [ 'deprecated' ] },
>> - '*block-incremental': 'bool',
>
> That hunk should go into a previous patch, I think.
Have found it already (it didn't compile).
Thanks, Juan.
© 2016 - 2026 Red Hat, Inc.