From: Juan Quintela <quintela@redhat.com>
To: qemu-devel@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
libvir-list@redhat.com, Stefan Hajnoczi <stefanha@redhat.com>,
Fam Zheng <fam@euphon.net>, Hanna Reitz <hreitz@redhat.com>,
Li Zhijian <lizhijian@fujitsu.com>, Peter Xu <peterx@redhat.com>,
Leonardo Bras <leobras@redhat.com>,
Juan Quintela <quintela@redhat.com>,
Eric Blake <eblake@redhat.com>,
Markus Armbruster <armbru@redhat.com>,
Hailiang Zhang <zhanghailiang@xfusion.com>,
qemu-block@nongnu.org, Fabiano Rosas <farosas@suse.de>
Subject: [PULL 25/38] migration: Deprecate old compression method
Date: Tue, 31 Oct 2023 10:01:29 +0100 [thread overview]
Message-ID: <20231031090142.13122-26-quintela@redhat.com> (raw)
In-Reply-To: <20231031090142.13122-1-quintela@redhat.com>
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>
---
docs/about/deprecated.rst | 8 +++++
qapi/migration.json | 63 ++++++++++++++++++++++++++-------------
migration/options.c | 13 ++++++++
3 files changed, 64 insertions(+), 20 deletions(-)
diff --git a/docs/about/deprecated.rst b/docs/about/deprecated.rst
index 35c8d7d1d4..ecccd5d3fc 100644
--- a/docs/about/deprecated.rst
+++ b/docs/about/deprecated.rst
@@ -496,3 +496,11 @@ devices or none.
Please see "QMP invocation for live storage migration with
``blockdev-mirror`` + NBD" in docs/interop/live-block-operations.rst
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.
diff --git a/qapi/migration.json b/qapi/migration.json
index e3b00a215b..e6610af428 100644
--- a/qapi/migration.json
+++ b/qapi/migration.json
@@ -272,6 +272,10 @@
# Features:
#
# @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
##
@@ -289,7 +293,7 @@
'*blocked-reasons': ['str'],
'*postcopy-blocktime': 'uint32',
'*postcopy-vcpu-blocktime': ['uint32'],
- '*compression': 'CompressionStats',
+ '*compression': { 'type': 'CompressionStats', 'features': [ 'deprecated' ] },
'*socket-address': ['SocketAddress'],
'*dirty-limit-throttle-time-per-round': 'uint64',
'*dirty-limit-ring-full-time': 'uint64'} }
@@ -530,7 +534,10 @@
# Features:
#
# @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.
#
@@ -538,7 +545,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' ] },
@@ -844,7 +852,9 @@
# Features:
#
# @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
# are experimental.
@@ -854,8 +864,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',
@@ -1023,7 +1036,9 @@
# Features:
#
# @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
# are experimental.
@@ -1038,10 +1053,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',
@@ -1078,7 +1097,7 @@
# Example:
#
# -> { "execute": "migrate-set-parameters" ,
-# "arguments": { "compress-level": 1 } }
+# "arguments": { "multifd-channels": 5 } }
# <- { "return": {} }
##
{ 'command': 'migrate-set-parameters', 'boxed': true,
@@ -1241,7 +1260,9 @@
# Features:
#
# @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
# are experimental.
@@ -1253,10 +1274,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',
@@ -1296,10 +1321,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 ae8ab47e32..9a39826ca5 100644
--- a/migration/options.c
+++ b/migration/options.c
@@ -483,6 +483,11 @@ bool migrate_caps_check(bool *old_caps, bool *new_caps, Error **errp)
" 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
if (new_caps[MIGRATION_CAPABILITY_X_COLO]) {
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 */
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.41.0
next prev parent reply other threads:[~2023-10-31 9:06 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-10-31 9:01 [PULL 00/38] Migration 20231031 patches Juan Quintela
2023-10-31 9:01 ` [PULL 01/38] migration/doc: Add contents Juan Quintela
2023-10-31 9:01 ` [PULL 02/38] migration/doc: Add documentation for backwards compatiblity Juan Quintela
2023-10-31 9:01 ` [PULL 03/38] migration/doc: How to migrate when hosts have different features Juan Quintela
2023-10-31 9:01 ` [PULL 04/38] migration/doc: We broke backwards compatibility Juan Quintela
2023-10-31 9:01 ` [PULL 05/38] migration: Receiving a zero page non zero is an error Juan Quintela
2023-10-31 9:01 ` [PULL 06/38] migration: Rename ram_handle_compressed() to ram_handle_zero() Juan Quintela
2023-10-31 9:01 ` [PULL 07/38] migration: Give one error if trying to set MULTIFD and XBZRLE Juan Quintela
2023-10-31 9:01 ` [PULL 08/38] migration: Give one error if trying to set COMPRESSION " Juan Quintela
2023-10-31 9:01 ` [PULL 09/38] migration: Remove save_page_use_compression() Juan Quintela
2023-10-31 9:01 ` [PULL 10/38] migration: Make compress_data_with_multithreads return bool Juan Quintela
2023-10-31 9:01 ` [PULL 11/38] migration: Simplify compress_page_with_multithread() Juan Quintela
2023-10-31 9:01 ` [PULL 12/38] migration: Move busy++ to migrate_with_multithread Juan Quintela
2023-10-31 9:01 ` [PULL 13/38] migration: Create compress_update_rates() Juan Quintela
2023-10-31 9:01 ` [PULL 14/38] migration: Export send_queued_data() Juan Quintela
2023-10-31 9:01 ` [PULL 15/38] migration: Move ram_flush_compressed_data() to ram-compress.c Juan Quintela
2023-10-31 9:01 ` [PULL 16/38] migration: Merge flush_compressed_data() and compress_flush_data() Juan Quintela
2023-10-31 9:01 ` [PULL 17/38] migration: Rename ram_compressed_pages() to compress_ram_pages() Juan Quintela
2023-10-31 9:01 ` [PULL 18/38] migration/ram: Fix compilation with -Wshadow=local Juan Quintela
2023-10-31 9:01 ` [PULL 19/38] migration: rename vmstate_save_needed->vmstate_section_needed Juan Quintela
2023-10-31 9:01 ` [PULL 20/38] migration: set file error on subsection loading Juan Quintela
2023-10-31 9:01 ` [PULL 21/38] qemu-iotests: Filter warnings about block migration being deprecated Juan Quintela
2023-10-31 9:01 ` [PULL 22/38] migration: migrate 'inc' command option is deprecated Juan Quintela
2023-10-31 9:01 ` [PULL 23/38] migration: migrate 'blk' " Juan Quintela
2023-10-31 9:01 ` [PULL 24/38] migration: Deprecate block migration Juan Quintela
2023-10-31 9:01 ` Juan Quintela [this message]
2023-10-31 9:01 ` [PULL 26/38] migration: Stop migration immediately in RDMA error paths Juan Quintela
2023-10-31 9:01 ` [PULL 27/38] qemu-file: Don't increment qemu_file_transferred at qemu_file_fill_buffer Juan Quintela
2023-10-31 9:01 ` [PULL 28/38] qemu_file: Use a stat64 for qemu_file_transferred Juan Quintela
2023-10-31 9:01 ` [PULL 29/38] qemu_file: total_transferred is not used anymore Juan Quintela
2023-10-31 9:01 ` [PULL 30/38] migration: Use the number of transferred bytes directly Juan Quintela
2023-10-31 9:01 ` [PULL 31/38] qemu_file: Remove unused qemu_file_transferred() Juan Quintela
2023-10-31 9:01 ` [PULL 32/38] qemu-file: Remove _noflush from qemu_file_transferred_noflush() Juan Quintela
2023-10-31 9:01 ` [PULL 33/38] migration: migration_transferred_bytes() don't need the QEMUFile Juan Quintela
2023-10-31 9:01 ` [PULL 34/38] migration: migration_rate_limit_reset() " Juan Quintela
2023-10-31 9:01 ` [PULL 35/38] qemu-file: Simplify qemu_file_get_error() Juan Quintela
2023-10-31 9:01 ` [PULL 36/38] migration: Use migration_transferred_bytes() Juan Quintela
2023-10-31 9:01 ` [PULL 37/38] migration: Remove transferred atomic counter Juan Quintela
2023-10-31 9:01 ` [PULL 38/38] qemu-file: Make qemu_fflush() return errors Juan Quintela
2023-10-31 23:31 ` [PULL 00/38] Migration 20231031 patches Stefan Hajnoczi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20231031090142.13122-26-quintela@redhat.com \
--to=quintela@redhat.com \
--cc=armbru@redhat.com \
--cc=eblake@redhat.com \
--cc=fam@euphon.net \
--cc=farosas@suse.de \
--cc=hreitz@redhat.com \
--cc=kwolf@redhat.com \
--cc=leobras@redhat.com \
--cc=libvir-list@redhat.com \
--cc=lizhijian@fujitsu.com \
--cc=peterx@redhat.com \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=stefanha@redhat.com \
--cc=zhanghailiang@xfusion.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).