6ee9df2871
- kvm-migration-Attempt-disk-reactivation-in-more-failure-.patch [bz#2058982] - kvm-util-mmap-alloc-qemu_fd_getfs.patch [bz#2057267] - kvm-vl.c-Create-late-backends-before-migration-object.patch [bz#2057267] - kvm-migration-postcopy-Detect-file-system-on-dest-host.patch [bz#2057267] - kvm-migration-mark-mixed-functions-that-can-suspend.patch [bz#2057267] - kvm-postcopy-ram-do-not-use-qatomic_mb_read.patch [bz#2057267] - kvm-migration-remove-extra-whitespace-character-for-code.patch [bz#2057267] - kvm-migration-Merge-ram_counters-and-ram_atomic_counters.patch [bz#2057267] - kvm-migration-Update-atomic-stats-out-of-the-mutex.patch [bz#2057267] - kvm-migration-Make-multifd_bytes-atomic.patch [bz#2057267] - kvm-migration-Make-dirty_sync_missed_zero_copy-atomic.patch [bz#2057267] - kvm-migration-Make-precopy_bytes-atomic.patch [bz#2057267] - kvm-migration-Make-downtime_bytes-atomic.patch [bz#2057267] - kvm-migration-Make-dirty_sync_count-atomic.patch [bz#2057267] - kvm-migration-Make-postcopy_requests-atomic.patch [bz#2057267] - kvm-migration-Rename-duplicate-to-zero_pages.patch [bz#2057267] - kvm-migration-Rename-normal-to-normal_pages.patch [bz#2057267] - kvm-migration-rename-enabled_capabilities-to-capabilitie.patch [bz#2057267] - kvm-migration-Pass-migrate_caps_check-the-old-and-new-ca.patch [bz#2057267] - kvm-migration-move-migration_global_dump-to-migration-hm.patch [bz#2057267] - kvm-spice-move-client_migrate_info-command-to-ui.patch [bz#2057267] - kvm-migration-Create-migrate_cap_set.patch [bz#2057267] - kvm-migration-Create-options.c.patch [bz#2057267] - kvm-migration-Move-migrate_colo_enabled-to-options.c.patch [bz#2057267] - kvm-migration-Move-migrate_use_compression-to-options.c.patch [bz#2057267] - kvm-migration-Move-migrate_use_events-to-options.c.patch [bz#2057267] - kvm-migration-Move-migrate_use_multifd-to-options.c.patch [bz#2057267] - kvm-migration-Move-migrate_use_zero_copy_send-to-options.patch [bz#2057267] - kvm-migration-Move-migrate_use_xbzrle-to-options.c.patch [bz#2057267] - kvm-migration-Move-migrate_use_block-to-options.c.patch [bz#2057267] - kvm-migration-Move-migrate_use_return-to-options.c.patch [bz#2057267] - kvm-migration-Create-migrate_rdma_pin_all-function.patch [bz#2057267] - kvm-migration-Move-migrate_caps_check-to-options.c.patch [bz#2057267] - kvm-migration-Move-qmp_query_migrate_capabilities-to-opt.patch [bz#2057267] - kvm-migration-Move-qmp_migrate_set_capabilities-to-optio.patch [bz#2057267] - kvm-migration-Move-migrate_cap_set-to-options.c.patch [bz#2057267] - kvm-migration-Move-parameters-functions-to-option.c.patch [bz#2057267] - kvm-migration-Use-migrate_max_postcopy_bandwidth.patch [bz#2057267] - kvm-migration-Move-migrate_use_block_incremental-to-opti.patch [bz#2057267] - kvm-migration-Create-migrate_throttle_trigger_threshold.patch [bz#2057267] - kvm-migration-Create-migrate_checkpoint_delay.patch [bz#2057267] - kvm-migration-Create-migrate_max_cpu_throttle.patch [bz#2057267] - kvm-migration-Move-migrate_announce_params-to-option.c.patch [bz#2057267] - kvm-migration-Create-migrate_cpu_throttle_initial-to-opt.patch [bz#2057267] - kvm-migration-Create-migrate_cpu_throttle_increment-func.patch [bz#2057267] - kvm-migration-Create-migrate_cpu_throttle_tailslow-funct.patch [bz#2057267] - kvm-migration-Move-migrate_postcopy-to-options.c.patch [bz#2057267] - kvm-migration-Create-migrate_max_bandwidth-function.patch [bz#2057267] - kvm-migration-Move-migrate_use_tls-to-options.c.patch [bz#2057267] - kvm-migration-Move-qmp_migrate_set_parameters-to-options.patch [bz#2057267] - kvm-migration-Allow-postcopy_ram_supported_by_host-to-re.patch [bz#2057267] - kvm-block-bdrv-blk_co_unref-for-calls-in-coroutine-conte.patch [bz#2185688] - kvm-block-Don-t-call-no_coroutine_fns-in-qmp_block_resiz.patch [bz#2185688] - kvm-iotests-Use-alternative-CPU-type-that-is-not-depreca.patch [bz#2185688] - kvm-iotests-Test-resizing-image-attached-to-an-iothread.patch [bz#2185688] - kvm-Enable-Linux-io_uring.patch [bz#1947230] - Resolves: bz#2058982 (Qemu core dump if cut off nfs storage during migration) - Resolves: bz#2057267 (Migration with postcopy fail when vm set with shared memory) - Resolves: bz#2185688 ([qemu-kvm] no response with QMP command block_resize) - Resolves: bz#1947230 (Enable QEMU support for io_uring in RHEL9)
249 lines
8.5 KiB
Diff
249 lines
8.5 KiB
Diff
From 00f6e941e75f378c84c773a15efde7dd085d9ce3 Mon Sep 17 00:00:00 2001
|
|
From: Juan Quintela <quintela@redhat.com>
|
|
Date: Wed, 1 Mar 2023 19:40:14 +0100
|
|
Subject: [PATCH 21/56] spice: move client_migrate_info command to ui/
|
|
MIME-Version: 1.0
|
|
Content-Type: text/plain; charset=UTF-8
|
|
Content-Transfer-Encoding: 8bit
|
|
|
|
RH-Author: Peter Xu <peterx@redhat.com>
|
|
RH-MergeRequest: 162: migration: Pretty failures for postcopy on unsupported memory types
|
|
RH-Bugzilla: 2057267
|
|
RH-Acked-by: Leonardo Brás <leobras@redhat.com>
|
|
RH-Acked-by: Miroslav Rezanina <mrezanin@redhat.com>
|
|
RH-Acked-by: quintela1 <quintela@redhat.com>
|
|
RH-Commit: [20/50] a587bb001b51a1f9fdf2fcfb0978bb931ae443b6 (peterx/qemu-kvm)
|
|
|
|
It has nothing to do with migration, except for the "migrate" in the
|
|
name of the command. Move it with the rest of the ui commands.
|
|
|
|
Signed-off-by: Juan Quintela <quintela@redhat.com>
|
|
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
|
|
(cherry picked from commit f9e1ef7482f1ee289b04f4b45702a1701bc8929d)
|
|
Signed-off-by: Peter Xu <peterx@redhat.com>
|
|
---
|
|
migration/migration-hmp-cmds.c | 17 -----------------
|
|
migration/migration.c | 30 ------------------------------
|
|
qapi/migration.json | 28 ----------------------------
|
|
qapi/ui.json | 28 ++++++++++++++++++++++++++++
|
|
ui/ui-hmp-cmds.c | 17 +++++++++++++++++
|
|
ui/ui-qmp-cmds.c | 29 +++++++++++++++++++++++++++++
|
|
6 files changed, 74 insertions(+), 75 deletions(-)
|
|
|
|
diff --git a/migration/migration-hmp-cmds.c b/migration/migration-hmp-cmds.c
|
|
index 71da91967a..4e9f00e7dc 100644
|
|
--- a/migration/migration-hmp-cmds.c
|
|
+++ b/migration/migration-hmp-cmds.c
|
|
@@ -636,23 +636,6 @@ void hmp_migrate_set_parameter(Monitor *mon, const QDict *qdict)
|
|
hmp_handle_error(mon, err);
|
|
}
|
|
|
|
-void hmp_client_migrate_info(Monitor *mon, const QDict *qdict)
|
|
-{
|
|
- Error *err = NULL;
|
|
- const char *protocol = qdict_get_str(qdict, "protocol");
|
|
- const char *hostname = qdict_get_str(qdict, "hostname");
|
|
- bool has_port = qdict_haskey(qdict, "port");
|
|
- int port = qdict_get_try_int(qdict, "port", -1);
|
|
- bool has_tls_port = qdict_haskey(qdict, "tls-port");
|
|
- int tls_port = qdict_get_try_int(qdict, "tls-port", -1);
|
|
- const char *cert_subject = qdict_get_try_str(qdict, "cert-subject");
|
|
-
|
|
- qmp_client_migrate_info(protocol, hostname,
|
|
- has_port, port, has_tls_port, tls_port,
|
|
- cert_subject, &err);
|
|
- hmp_handle_error(mon, err);
|
|
-}
|
|
-
|
|
void hmp_migrate_start_postcopy(Monitor *mon, const QDict *qdict)
|
|
{
|
|
Error *err = NULL;
|
|
diff --git a/migration/migration.c b/migration/migration.c
|
|
index aa96ffdc5b..b745d829a4 100644
|
|
--- a/migration/migration.c
|
|
+++ b/migration/migration.c
|
|
@@ -63,7 +63,6 @@
|
|
#include "sysemu/cpus.h"
|
|
#include "yank_functions.h"
|
|
#include "sysemu/qtest.h"
|
|
-#include "ui/qemu-spice.h"
|
|
|
|
#define MAX_THROTTLE (128 << 20) /* Migration transfer speed throttling */
|
|
|
|
@@ -1018,35 +1017,6 @@ MigrationParameters *qmp_query_migrate_parameters(Error **errp)
|
|
return params;
|
|
}
|
|
|
|
-void qmp_client_migrate_info(const char *protocol, const char *hostname,
|
|
- bool has_port, int64_t port,
|
|
- bool has_tls_port, int64_t tls_port,
|
|
- const char *cert_subject,
|
|
- Error **errp)
|
|
-{
|
|
- if (strcmp(protocol, "spice") == 0) {
|
|
- if (!qemu_using_spice(errp)) {
|
|
- return;
|
|
- }
|
|
-
|
|
- if (!has_port && !has_tls_port) {
|
|
- error_setg(errp, QERR_MISSING_PARAMETER, "port/tls-port");
|
|
- return;
|
|
- }
|
|
-
|
|
- if (qemu_spice.migrate_info(hostname,
|
|
- has_port ? port : -1,
|
|
- has_tls_port ? tls_port : -1,
|
|
- cert_subject)) {
|
|
- error_setg(errp, "Could not set up display for migration");
|
|
- return;
|
|
- }
|
|
- return;
|
|
- }
|
|
-
|
|
- error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "protocol", "'spice'");
|
|
-}
|
|
-
|
|
AnnounceParameters *migrate_announce_params(void)
|
|
{
|
|
static AnnounceParameters ap;
|
|
diff --git a/qapi/migration.json b/qapi/migration.json
|
|
index c84fa10e86..2c35b7b9cf 100644
|
|
--- a/qapi/migration.json
|
|
+++ b/qapi/migration.json
|
|
@@ -1203,34 +1203,6 @@
|
|
{ 'command': 'query-migrate-parameters',
|
|
'returns': 'MigrationParameters' }
|
|
|
|
-##
|
|
-# @client_migrate_info:
|
|
-#
|
|
-# Set migration information for remote display. This makes the server
|
|
-# ask the client to automatically reconnect using the new parameters
|
|
-# once migration finished successfully. Only implemented for SPICE.
|
|
-#
|
|
-# @protocol: must be "spice"
|
|
-# @hostname: migration target hostname
|
|
-# @port: spice tcp port for plaintext channels
|
|
-# @tls-port: spice tcp port for tls-secured channels
|
|
-# @cert-subject: server certificate subject
|
|
-#
|
|
-# Since: 0.14
|
|
-#
|
|
-# Example:
|
|
-#
|
|
-# -> { "execute": "client_migrate_info",
|
|
-# "arguments": { "protocol": "spice",
|
|
-# "hostname": "virt42.lab.kraxel.org",
|
|
-# "port": 1234 } }
|
|
-# <- { "return": {} }
|
|
-#
|
|
-##
|
|
-{ 'command': 'client_migrate_info',
|
|
- 'data': { 'protocol': 'str', 'hostname': 'str', '*port': 'int',
|
|
- '*tls-port': 'int', '*cert-subject': 'str' } }
|
|
-
|
|
##
|
|
# @migrate-start-postcopy:
|
|
#
|
|
diff --git a/qapi/ui.json b/qapi/ui.json
|
|
index 98322342f7..7ddd27a932 100644
|
|
--- a/qapi/ui.json
|
|
+++ b/qapi/ui.json
|
|
@@ -1554,3 +1554,31 @@
|
|
{ 'command': 'display-update',
|
|
'data': 'DisplayUpdateOptions',
|
|
'boxed' : true }
|
|
+
|
|
+##
|
|
+# @client_migrate_info:
|
|
+#
|
|
+# Set migration information for remote display. This makes the server
|
|
+# ask the client to automatically reconnect using the new parameters
|
|
+# once migration finished successfully. Only implemented for SPICE.
|
|
+#
|
|
+# @protocol: must be "spice"
|
|
+# @hostname: migration target hostname
|
|
+# @port: spice tcp port for plaintext channels
|
|
+# @tls-port: spice tcp port for tls-secured channels
|
|
+# @cert-subject: server certificate subject
|
|
+#
|
|
+# Since: 0.14
|
|
+#
|
|
+# Example:
|
|
+#
|
|
+# -> { "execute": "client_migrate_info",
|
|
+# "arguments": { "protocol": "spice",
|
|
+# "hostname": "virt42.lab.kraxel.org",
|
|
+# "port": 1234 } }
|
|
+# <- { "return": {} }
|
|
+#
|
|
+##
|
|
+{ 'command': 'client_migrate_info',
|
|
+ 'data': { 'protocol': 'str', 'hostname': 'str', '*port': 'int',
|
|
+ '*tls-port': 'int', '*cert-subject': 'str' } }
|
|
diff --git a/ui/ui-hmp-cmds.c b/ui/ui-hmp-cmds.c
|
|
index 5c456ecc02..c671389473 100644
|
|
--- a/ui/ui-hmp-cmds.c
|
|
+++ b/ui/ui-hmp-cmds.c
|
|
@@ -458,3 +458,20 @@ hmp_screendump(Monitor *mon, const QDict *qdict)
|
|
end:
|
|
hmp_handle_error(mon, err);
|
|
}
|
|
+
|
|
+void hmp_client_migrate_info(Monitor *mon, const QDict *qdict)
|
|
+{
|
|
+ Error *err = NULL;
|
|
+ const char *protocol = qdict_get_str(qdict, "protocol");
|
|
+ const char *hostname = qdict_get_str(qdict, "hostname");
|
|
+ bool has_port = qdict_haskey(qdict, "port");
|
|
+ int port = qdict_get_try_int(qdict, "port", -1);
|
|
+ bool has_tls_port = qdict_haskey(qdict, "tls-port");
|
|
+ int tls_port = qdict_get_try_int(qdict, "tls-port", -1);
|
|
+ const char *cert_subject = qdict_get_try_str(qdict, "cert-subject");
|
|
+
|
|
+ qmp_client_migrate_info(protocol, hostname,
|
|
+ has_port, port, has_tls_port, tls_port,
|
|
+ cert_subject, &err);
|
|
+ hmp_handle_error(mon, err);
|
|
+}
|
|
diff --git a/ui/ui-qmp-cmds.c b/ui/ui-qmp-cmds.c
|
|
index dbc4afcd73..a37a7024f3 100644
|
|
--- a/ui/ui-qmp-cmds.c
|
|
+++ b/ui/ui-qmp-cmds.c
|
|
@@ -175,3 +175,32 @@ void qmp_display_update(DisplayUpdateOptions *arg, Error **errp)
|
|
abort();
|
|
}
|
|
}
|
|
+
|
|
+void qmp_client_migrate_info(const char *protocol, const char *hostname,
|
|
+ bool has_port, int64_t port,
|
|
+ bool has_tls_port, int64_t tls_port,
|
|
+ const char *cert_subject,
|
|
+ Error **errp)
|
|
+{
|
|
+ if (strcmp(protocol, "spice") == 0) {
|
|
+ if (!qemu_using_spice(errp)) {
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ if (!has_port && !has_tls_port) {
|
|
+ error_setg(errp, QERR_MISSING_PARAMETER, "port/tls-port");
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ if (qemu_spice.migrate_info(hostname,
|
|
+ has_port ? port : -1,
|
|
+ has_tls_port ? tls_port : -1,
|
|
+ cert_subject)) {
|
|
+ error_setg(errp, "Could not set up display for migration");
|
|
+ return;
|
|
+ }
|
|
+ return;
|
|
+ }
|
|
+
|
|
+ error_setg(errp, QERR_INVALID_PARAMETER_VALUE, "protocol", "'spice'");
|
|
+}
|
|
--
|
|
2.39.1
|
|
|