mirror of https://github.com/xemu-project/xemu.git
migration: Deprecate old compression method
Acked-by: Stefan Hajnoczi <stefanha@redhat.com> Acked-by: Peter Xu <peterx@redhat.com> Reviewed-by: Markus Armbruster <armbru@redhat.com> Signed-off-by: Juan Quintela <quintela@redhat.com> Message-ID: <20231018115513.2163-6-quintela@redhat.com>
This commit is contained in:
parent
66db46ca83
commit
864128df46
|
@ -496,3 +496,11 @@ devices or none.
|
||||||
Please see "QMP invocation for live storage migration with
|
Please see "QMP invocation for live storage migration with
|
||||||
``blockdev-mirror`` + NBD" in docs/interop/live-block-operations.rst
|
``blockdev-mirror`` + NBD" in docs/interop/live-block-operations.rst
|
||||||
for a detailed explanation.
|
for a detailed explanation.
|
||||||
|
|
||||||
|
old compression method (since 8.2)
|
||||||
|
''''''''''''''''''''''''''''''''''
|
||||||
|
|
||||||
|
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 fail randomly. If you need
|
||||||
|
compression, use multifd compression methods.
|
||||||
|
|
|
@ -483,6 +483,11 @@ bool migrate_caps_check(bool *old_caps, bool *new_caps, Error **errp)
|
||||||
" use blockdev-mirror with NBD instead");
|
" use blockdev-mirror with NBD instead");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (new_caps[MIGRATION_CAPABILITY_COMPRESS]) {
|
||||||
|
warn_report("old compression method is deprecated;"
|
||||||
|
" use multifd compression methods instead");
|
||||||
|
}
|
||||||
|
|
||||||
#ifndef CONFIG_REPLICATION
|
#ifndef CONFIG_REPLICATION
|
||||||
if (new_caps[MIGRATION_CAPABILITY_X_COLO]) {
|
if (new_caps[MIGRATION_CAPABILITY_X_COLO]) {
|
||||||
error_setg(errp, "QEMU compiled without replication module"
|
error_setg(errp, "QEMU compiled without replication module"
|
||||||
|
@ -1335,18 +1340,26 @@ static void migrate_params_apply(MigrateSetParameters *params, Error **errp)
|
||||||
/* TODO use QAPI_CLONE() instead of duplicating it inline */
|
/* TODO use QAPI_CLONE() instead of duplicating it inline */
|
||||||
|
|
||||||
if (params->has_compress_level) {
|
if (params->has_compress_level) {
|
||||||
|
warn_report("old compression is deprecated;"
|
||||||
|
" use multifd compression methods instead");
|
||||||
s->parameters.compress_level = params->compress_level;
|
s->parameters.compress_level = params->compress_level;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (params->has_compress_threads) {
|
if (params->has_compress_threads) {
|
||||||
|
warn_report("old compression is deprecated;"
|
||||||
|
" use multifd compression methods instead");
|
||||||
s->parameters.compress_threads = params->compress_threads;
|
s->parameters.compress_threads = params->compress_threads;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (params->has_compress_wait_thread) {
|
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;
|
s->parameters.compress_wait_thread = params->compress_wait_thread;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (params->has_decompress_threads) {
|
if (params->has_decompress_threads) {
|
||||||
|
warn_report("old compression is deprecated;"
|
||||||
|
" use multifd compression methods instead");
|
||||||
s->parameters.decompress_threads = params->decompress_threads;
|
s->parameters.decompress_threads = params->decompress_threads;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -272,6 +272,10 @@
|
||||||
# Features:
|
# Features:
|
||||||
#
|
#
|
||||||
# @deprecated: Member @disk is deprecated because block migration is.
|
# @deprecated: Member @disk is deprecated because block migration is.
|
||||||
|
# Member @compression is deprecated because it is unreliable and
|
||||||
|
# untested. It is recommended to use multifd migration, which
|
||||||
|
# offers an alternative compression implementation that is
|
||||||
|
# reliable and tested.
|
||||||
#
|
#
|
||||||
# Since: 0.14
|
# Since: 0.14
|
||||||
##
|
##
|
||||||
|
@ -289,7 +293,7 @@
|
||||||
'*blocked-reasons': ['str'],
|
'*blocked-reasons': ['str'],
|
||||||
'*postcopy-blocktime': 'uint32',
|
'*postcopy-blocktime': 'uint32',
|
||||||
'*postcopy-vcpu-blocktime': ['uint32'],
|
'*postcopy-vcpu-blocktime': ['uint32'],
|
||||||
'*compression': 'CompressionStats',
|
'*compression': { 'type': 'CompressionStats', 'features': [ 'deprecated' ] },
|
||||||
'*socket-address': ['SocketAddress'],
|
'*socket-address': ['SocketAddress'],
|
||||||
'*dirty-limit-throttle-time-per-round': 'uint64',
|
'*dirty-limit-throttle-time-per-round': 'uint64',
|
||||||
'*dirty-limit-ring-full-time': 'uint64'} }
|
'*dirty-limit-ring-full-time': 'uint64'} }
|
||||||
|
@ -530,7 +534,10 @@
|
||||||
# Features:
|
# Features:
|
||||||
#
|
#
|
||||||
# @deprecated: Member @block is deprecated. Use blockdev-mirror with
|
# @deprecated: Member @block is deprecated. Use blockdev-mirror with
|
||||||
# NBD instead.
|
# NBD instead. Member @compression is deprecated because it is
|
||||||
|
# unreliable and untested. It is recommended to use multifd
|
||||||
|
# migration, which offers an alternative compression
|
||||||
|
# implementation that is reliable and tested.
|
||||||
#
|
#
|
||||||
# @unstable: Members @x-colo and @x-ignore-shared are experimental.
|
# @unstable: Members @x-colo and @x-ignore-shared are experimental.
|
||||||
#
|
#
|
||||||
|
@ -538,7 +545,8 @@
|
||||||
##
|
##
|
||||||
{ 'enum': 'MigrationCapability',
|
{ 'enum': 'MigrationCapability',
|
||||||
'data': ['xbzrle', 'rdma-pin-all', 'auto-converge', 'zero-blocks',
|
'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' ] },
|
{ 'name': 'x-colo', 'features': [ 'unstable' ] },
|
||||||
'release-ram',
|
'release-ram',
|
||||||
{ 'name': 'block', 'features': [ 'deprecated' ] },
|
{ 'name': 'block', 'features': [ 'deprecated' ] },
|
||||||
|
@ -844,7 +852,9 @@
|
||||||
# Features:
|
# Features:
|
||||||
#
|
#
|
||||||
# @deprecated: Member @block-incremental is deprecated. Use
|
# @deprecated: Member @block-incremental is deprecated. Use
|
||||||
# blockdev-mirror with NBD instead.
|
# blockdev-mirror with NBD instead. Members @compress-level,
|
||||||
|
# @compress-threads, @decompress-threads and @compress-wait-thread
|
||||||
|
# are deprecated because @compression is deprecated.
|
||||||
#
|
#
|
||||||
# @unstable: Members @x-checkpoint-delay and @x-vcpu-dirty-limit-period
|
# @unstable: Members @x-checkpoint-delay and @x-vcpu-dirty-limit-period
|
||||||
# are experimental.
|
# are experimental.
|
||||||
|
@ -854,8 +864,11 @@
|
||||||
{ 'enum': 'MigrationParameter',
|
{ 'enum': 'MigrationParameter',
|
||||||
'data': ['announce-initial', 'announce-max',
|
'data': ['announce-initial', 'announce-max',
|
||||||
'announce-rounds', 'announce-step',
|
'announce-rounds', 'announce-step',
|
||||||
'compress-level', 'compress-threads', 'decompress-threads',
|
{ 'name': 'compress-level', 'features': [ 'deprecated' ] },
|
||||||
'compress-wait-thread', 'throttle-trigger-threshold',
|
{ '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-initial', 'cpu-throttle-increment',
|
||||||
'cpu-throttle-tailslow',
|
'cpu-throttle-tailslow',
|
||||||
'tls-creds', 'tls-hostname', 'tls-authz', 'max-bandwidth',
|
'tls-creds', 'tls-hostname', 'tls-authz', 'max-bandwidth',
|
||||||
|
@ -1023,7 +1036,9 @@
|
||||||
# Features:
|
# Features:
|
||||||
#
|
#
|
||||||
# @deprecated: Member @block-incremental is deprecated. Use
|
# @deprecated: Member @block-incremental is deprecated. Use
|
||||||
# blockdev-mirror with NBD instead.
|
# blockdev-mirror with NBD instead. Members @compress-level,
|
||||||
|
# @compress-threads, @decompress-threads and @compress-wait-thread
|
||||||
|
# are deprecated because @compression is deprecated.
|
||||||
#
|
#
|
||||||
# @unstable: Members @x-checkpoint-delay and @x-vcpu-dirty-limit-period
|
# @unstable: Members @x-checkpoint-delay and @x-vcpu-dirty-limit-period
|
||||||
# are experimental.
|
# are experimental.
|
||||||
|
@ -1038,10 +1053,14 @@
|
||||||
'*announce-max': 'size',
|
'*announce-max': 'size',
|
||||||
'*announce-rounds': 'size',
|
'*announce-rounds': 'size',
|
||||||
'*announce-step': 'size',
|
'*announce-step': 'size',
|
||||||
'*compress-level': 'uint8',
|
'*compress-level': { 'type': 'uint8',
|
||||||
'*compress-threads': 'uint8',
|
'features': [ 'deprecated' ] },
|
||||||
'*compress-wait-thread': 'bool',
|
'*compress-threads': { 'type': 'uint8',
|
||||||
'*decompress-threads': 'uint8',
|
'features': [ 'deprecated' ] },
|
||||||
|
'*compress-wait-thread': { 'type': 'bool',
|
||||||
|
'features': [ 'deprecated' ] },
|
||||||
|
'*decompress-threads': { 'type': 'uint8',
|
||||||
|
'features': [ 'deprecated' ] },
|
||||||
'*throttle-trigger-threshold': 'uint8',
|
'*throttle-trigger-threshold': 'uint8',
|
||||||
'*cpu-throttle-initial': 'uint8',
|
'*cpu-throttle-initial': 'uint8',
|
||||||
'*cpu-throttle-increment': 'uint8',
|
'*cpu-throttle-increment': 'uint8',
|
||||||
|
@ -1078,7 +1097,7 @@
|
||||||
# Example:
|
# Example:
|
||||||
#
|
#
|
||||||
# -> { "execute": "migrate-set-parameters" ,
|
# -> { "execute": "migrate-set-parameters" ,
|
||||||
# "arguments": { "compress-level": 1 } }
|
# "arguments": { "multifd-channels": 5 } }
|
||||||
# <- { "return": {} }
|
# <- { "return": {} }
|
||||||
##
|
##
|
||||||
{ 'command': 'migrate-set-parameters', 'boxed': true,
|
{ 'command': 'migrate-set-parameters', 'boxed': true,
|
||||||
|
@ -1241,7 +1260,9 @@
|
||||||
# Features:
|
# Features:
|
||||||
#
|
#
|
||||||
# @deprecated: Member @block-incremental is deprecated. Use
|
# @deprecated: Member @block-incremental is deprecated. Use
|
||||||
# blockdev-mirror with NBD instead.
|
# blockdev-mirror with NBD instead. Members @compress-level,
|
||||||
|
# @compress-threads, @decompress-threads and @compress-wait-thread
|
||||||
|
# are deprecated because @compression is deprecated.
|
||||||
#
|
#
|
||||||
# @unstable: Members @x-checkpoint-delay and @x-vcpu-dirty-limit-period
|
# @unstable: Members @x-checkpoint-delay and @x-vcpu-dirty-limit-period
|
||||||
# are experimental.
|
# are experimental.
|
||||||
|
@ -1253,10 +1274,14 @@
|
||||||
'*announce-max': 'size',
|
'*announce-max': 'size',
|
||||||
'*announce-rounds': 'size',
|
'*announce-rounds': 'size',
|
||||||
'*announce-step': 'size',
|
'*announce-step': 'size',
|
||||||
'*compress-level': 'uint8',
|
'*compress-level': { 'type': 'uint8',
|
||||||
'*compress-threads': 'uint8',
|
'features': [ 'deprecated' ] },
|
||||||
'*compress-wait-thread': 'bool',
|
'*compress-threads': { 'type': 'uint8',
|
||||||
'*decompress-threads': 'uint8',
|
'features': [ 'deprecated' ] },
|
||||||
|
'*compress-wait-thread': { 'type': 'bool',
|
||||||
|
'features': [ 'deprecated' ] },
|
||||||
|
'*decompress-threads': { 'type': 'uint8',
|
||||||
|
'features': [ 'deprecated' ] },
|
||||||
'*throttle-trigger-threshold': 'uint8',
|
'*throttle-trigger-threshold': 'uint8',
|
||||||
'*cpu-throttle-initial': 'uint8',
|
'*cpu-throttle-initial': 'uint8',
|
||||||
'*cpu-throttle-increment': 'uint8',
|
'*cpu-throttle-increment': 'uint8',
|
||||||
|
@ -1296,10 +1321,8 @@
|
||||||
#
|
#
|
||||||
# -> { "execute": "query-migrate-parameters" }
|
# -> { "execute": "query-migrate-parameters" }
|
||||||
# <- { "return": {
|
# <- { "return": {
|
||||||
# "decompress-threads": 2,
|
# "multifd-channels": 2,
|
||||||
# "cpu-throttle-increment": 10,
|
# "cpu-throttle-increment": 10,
|
||||||
# "compress-threads": 8,
|
|
||||||
# "compress-level": 1,
|
|
||||||
# "cpu-throttle-initial": 20,
|
# "cpu-throttle-initial": 20,
|
||||||
# "max-bandwidth": 33554432,
|
# "max-bandwidth": 33554432,
|
||||||
# "downtime-limit": 300
|
# "downtime-limit": 300
|
||||||
|
|
Loading…
Reference in New Issue