@@ -35,6 +35,7 @@ void migration_channel_process_incoming(QIOChannel *ioc)
trace_migration_set_incoming_channel(
ioc, object_get_typename(OBJECT(ioc)));
+ qio_channel_set_yank(ioc, s->parameters.yank);
if (s->parameters.tls_creds &&
*s->parameters.tls_creds &&
!object_dynamic_cast(OBJECT(ioc),
@@ -67,6 +68,7 @@ void migration_channel_connect(MigrationState *s,
ioc, object_get_typename(OBJECT(ioc)), hostname, error);
if (!error) {
+ qio_channel_set_yank(ioc, s->parameters.yank);
if (s->parameters.tls_creds &&
*s->parameters.tls_creds &&
!object_dynamic_cast(OBJECT(ioc),
@@ -814,6 +814,8 @@ MigrationParameters *qmp_query_migrate_parameters(Error **errp)
params->max_postcopy_bandwidth = s->parameters.max_postcopy_bandwidth;
params->has_max_cpu_throttle = true;
params->max_cpu_throttle = s->parameters.max_cpu_throttle;
+ params->has_yank = true;
+ params->yank = s->parameters.yank;
params->has_announce_initial = true;
params->announce_initial = s->parameters.announce_initial;
params->has_announce_max = true;
@@ -1364,6 +1366,9 @@ static void migrate_params_test_apply(MigrateSetParameters *params,
if (params->has_max_cpu_throttle) {
dest->max_cpu_throttle = params->max_cpu_throttle;
}
+ if (params->has_yank) {
+ dest->yank = params->yank;
+ }
if (params->has_announce_initial) {
dest->announce_initial = params->announce_initial;
}
@@ -1472,6 +1477,9 @@ static void migrate_params_apply(MigrateSetParameters *params, Error **errp)
if (params->has_max_cpu_throttle) {
s->parameters.max_cpu_throttle = params->max_cpu_throttle;
}
+ if (params->has_yank) {
+ s->parameters.yank = params->yank;
+ }
if (params->has_announce_initial) {
s->parameters.announce_initial = params->announce_initial;
}
@@ -3623,6 +3631,8 @@ static Property migration_properties[] = {
DEFINE_PROP_UINT8("max-cpu-throttle", MigrationState,
parameters.max_cpu_throttle,
DEFAULT_MIGRATE_MAX_CPU_THROTTLE),
+ DEFINE_PROP_BOOL("yank", MigrationState,
+ parameters.yank, false),
DEFINE_PROP_SIZE("announce-initial", MigrationState,
parameters.announce_initial,
DEFAULT_MIGRATE_ANNOUNCE_INITIAL),
@@ -3711,6 +3721,7 @@ static void migration_instance_init(Object *obj)
params->has_xbzrle_cache_size = true;
params->has_max_postcopy_bandwidth = true;
params->has_max_cpu_throttle = true;
+ params->has_yank = true;
params->has_announce_initial = true;
params->has_announce_max = true;
params->has_announce_rounds = true;
@@ -623,6 +623,9 @@
# will consume more CPU.
# Defaults to 1. (Since 5.0)
#
+# @yank: Shutdown the migration socket when the 'yank' qmp command is
+# executed. (Since: 5.1)
+#
# Since: 2.4
##
{ 'enum': 'MigrationParameter',
@@ -636,7 +639,7 @@
'multifd-channels',
'xbzrle-cache-size', 'max-postcopy-bandwidth',
'max-cpu-throttle', 'multifd-compression',
- 'multifd-zlib-level' ,'multifd-zstd-level' ] }
+ 'multifd-zlib-level' ,'multifd-zstd-level', 'yank' ] }
##
# @MigrateSetParameters:
@@ -747,6 +750,9 @@
# will consume more CPU.
# Defaults to 1. (Since 5.0)
#
+# @yank: Shutdown the migration socket when the 'yank' qmp command is
+# executed. (Since: 5.1)
+#
# Since: 2.4
##
# TODO either fuse back into MigrationParameters, or make
@@ -776,7 +782,8 @@
'*max-cpu-throttle': 'int',
'*multifd-compression': 'MultiFDCompression',
'*multifd-zlib-level': 'int',
- '*multifd-zstd-level': 'int' } }
+ '*multifd-zstd-level': 'int',
+ '*yank': 'bool'} }
##
# @migrate-set-parameters:
@@ -907,6 +914,9 @@
# will consume more CPU.
# Defaults to 1. (Since 5.0)
#
+# @yank: Shutdown the migration socket when the 'yank' qmp command is
+# executed. (Since: 5.1)
+#
# Since: 2.4
##
{ 'struct': 'MigrationParameters',
@@ -934,7 +944,8 @@
'*max-cpu-throttle': 'uint8',
'*multifd-compression': 'MultiFDCompression',
'*multifd-zlib-level': 'uint8',
- '*multifd-zstd-level': 'uint8' } }
+ '*multifd-zstd-level': 'uint8',
+ '*yank': 'bool'} }
##
# @query-migrate-parameters:
Add yank option which is passed to the socket-channel. Signed-off-by: Lukas Straub <lukasstraub2@web.de> --- migration/channel.c | 2 ++ migration/migration.c | 11 +++++++++++ qapi/migration.json | 17 ++++++++++++++--- 3 files changed, 27 insertions(+), 3 deletions(-)