Lines Matching +full:build +full:- +full:deprecated
4 * Copyright (c) 2012-2023 Red Hat Inc
11 * See the COPYING file in the top-level directory.
15 #include "qemu/error-report.h"
17 #include "qapi/clone-visitor.h"
19 #include "qapi/qapi-commands-migration.h"
20 #include "qapi/qapi-visit-migration.h"
28 #include "migration-stats.h"
29 #include "qemu-file.h"
90 DEFINE_PROP_BOOL("store-global-state", MigrationState,
92 DEFINE_PROP_BOOL("send-configuration", MigrationState,
94 DEFINE_PROP_BOOL("send-section-footer", MigrationState,
96 DEFINE_PROP_BOOL("send-switchover-start", MigrationState,
98 DEFINE_PROP_BOOL("multifd-flush-after-each-section", MigrationState,
100 DEFINE_PROP_UINT8("x-clear-bitmap-shift", MigrationState,
102 DEFINE_PROP_BOOL("x-preempt-pre-7-2", MigrationState,
104 DEFINE_PROP_BOOL("multifd-clean-tls-termination", MigrationState,
108 DEFINE_PROP_UINT8("x-throttle-trigger-threshold", MigrationState,
111 DEFINE_PROP_UINT8("x-cpu-throttle-initial", MigrationState,
114 DEFINE_PROP_UINT8("x-cpu-throttle-increment", MigrationState,
117 DEFINE_PROP_BOOL("x-cpu-throttle-tailslow", MigrationState,
119 DEFINE_PROP_SIZE("x-max-bandwidth", MigrationState,
121 DEFINE_PROP_SIZE("avail-switchover-bandwidth", MigrationState,
123 DEFINE_PROP_UINT64("x-downtime-limit", MigrationState,
126 DEFINE_PROP_UINT32("x-checkpoint-delay", MigrationState,
129 DEFINE_PROP_UINT8("multifd-channels", MigrationState,
132 DEFINE_PROP_MULTIFD_COMPRESSION("multifd-compression", MigrationState,
135 DEFINE_PROP_UINT8("multifd-zlib-level", MigrationState,
138 DEFINE_PROP_UINT8("multifd-qatzip-level", MigrationState,
141 DEFINE_PROP_UINT8("multifd-zstd-level", MigrationState,
144 DEFINE_PROP_SIZE("xbzrle-cache-size", MigrationState,
147 DEFINE_PROP_SIZE("max-postcopy-bandwidth", MigrationState,
150 DEFINE_PROP_UINT8("max-cpu-throttle", MigrationState,
153 DEFINE_PROP_SIZE("announce-initial", MigrationState,
156 DEFINE_PROP_SIZE("announce-max", MigrationState,
159 DEFINE_PROP_SIZE("announce-rounds", MigrationState,
162 DEFINE_PROP_SIZE("announce-step", MigrationState,
165 DEFINE_PROP_STRING("tls-creds", MigrationState, parameters.tls_creds),
166 DEFINE_PROP_STRING("tls-hostname", MigrationState, parameters.tls_hostname),
167 DEFINE_PROP_STRING("tls-authz", MigrationState, parameters.tls_authz),
168 DEFINE_PROP_UINT64("x-vcpu-dirty-limit-period", MigrationState,
171 DEFINE_PROP_UINT64("vcpu-dirty-limit", MigrationState,
177 DEFINE_PROP_ZERO_PAGE_DETECTION("zero-page-detection", MigrationState,
182 DEFINE_PROP_MIG_CAP("x-xbzrle", MIGRATION_CAPABILITY_XBZRLE),
183 DEFINE_PROP_MIG_CAP("x-rdma-pin-all", MIGRATION_CAPABILITY_RDMA_PIN_ALL),
184 DEFINE_PROP_MIG_CAP("x-auto-converge", MIGRATION_CAPABILITY_AUTO_CONVERGE),
185 DEFINE_PROP_MIG_CAP("x-zero-blocks", MIGRATION_CAPABILITY_ZERO_BLOCKS),
186 DEFINE_PROP_MIG_CAP("x-events", MIGRATION_CAPABILITY_EVENTS),
187 DEFINE_PROP_MIG_CAP("x-postcopy-ram", MIGRATION_CAPABILITY_POSTCOPY_RAM),
188 DEFINE_PROP_MIG_CAP("x-postcopy-preempt",
190 DEFINE_PROP_MIG_CAP("x-colo", MIGRATION_CAPABILITY_X_COLO),
191 DEFINE_PROP_MIG_CAP("x-release-ram", MIGRATION_CAPABILITY_RELEASE_RAM),
192 DEFINE_PROP_MIG_CAP("x-return-path", MIGRATION_CAPABILITY_RETURN_PATH),
193 DEFINE_PROP_MIG_CAP("x-multifd", MIGRATION_CAPABILITY_MULTIFD),
194 DEFINE_PROP_MIG_CAP("x-background-snapshot",
197 DEFINE_PROP_MIG_CAP("x-zero-copy-send",
200 DEFINE_PROP_MIG_CAP("x-switchover-ack",
202 DEFINE_PROP_MIG_CAP("x-dirty-limit", MIGRATION_CAPABILITY_DIRTY_LIMIT),
203 DEFINE_PROP_MIG_CAP("mapped-ram", MIGRATION_CAPABILITY_MAPPED_RAM),
211 return s->capabilities[MIGRATION_CAPABILITY_AUTO_CONVERGE]; in migrate_auto_converge()
218 return s->send_switchover_start; in migrate_send_switchover_start()
225 return s->capabilities[MIGRATION_CAPABILITY_BACKGROUND_SNAPSHOT]; in migrate_background_snapshot()
232 return s->capabilities[MIGRATION_CAPABILITY_X_COLO]; in migrate_colo()
239 return s->capabilities[MIGRATION_CAPABILITY_DIRTY_BITMAPS]; in migrate_dirty_bitmaps()
246 return s->capabilities[MIGRATION_CAPABILITY_DIRTY_LIMIT]; in migrate_dirty_limit()
253 return s->capabilities[MIGRATION_CAPABILITY_EVENTS]; in migrate_events()
260 return s->capabilities[MIGRATION_CAPABILITY_MAPPED_RAM]; in migrate_mapped_ram()
267 return s->capabilities[MIGRATION_CAPABILITY_X_IGNORE_SHARED]; in migrate_ignore_shared()
274 return s->capabilities[MIGRATION_CAPABILITY_LATE_BLOCK_ACTIVATE]; in migrate_late_block_activate()
281 return s->capabilities[MIGRATION_CAPABILITY_MULTIFD]; in migrate_multifd()
288 return s->capabilities[MIGRATION_CAPABILITY_PAUSE_BEFORE_SWITCHOVER]; in migrate_pause_before_switchover()
295 return s->capabilities[MIGRATION_CAPABILITY_POSTCOPY_BLOCKTIME]; in migrate_postcopy_blocktime()
302 return s->capabilities[MIGRATION_CAPABILITY_POSTCOPY_PREEMPT]; in migrate_postcopy_preempt()
309 return s->capabilities[MIGRATION_CAPABILITY_POSTCOPY_RAM]; in migrate_postcopy_ram()
316 return s->capabilities[MIGRATION_CAPABILITY_RDMA_PIN_ALL]; in migrate_rdma_pin_all()
323 return s->capabilities[MIGRATION_CAPABILITY_RELEASE_RAM]; in migrate_release_ram()
330 return s->capabilities[MIGRATION_CAPABILITY_RETURN_PATH]; in migrate_return_path()
337 return s->capabilities[MIGRATION_CAPABILITY_SWITCHOVER_ACK]; in migrate_switchover_ack()
344 return s->capabilities[MIGRATION_CAPABILITY_VALIDATE_UUID]; in migrate_validate_uuid()
351 return s->capabilities[MIGRATION_CAPABILITY_XBZRLE]; in migrate_xbzrle()
358 return s->capabilities[MIGRATION_CAPABILITY_ZERO_COPY_SEND]; in migrate_zero_copy_send()
367 return s->multifd_flush_after_each_section; in migrate_multifd_flush_after_each_section()
379 return s->rdma_migration; in migrate_rdma()
386 return s->parameters.tls_creds && *s->parameters.tls_creds; in migrate_tls()
428 /* Background-snapshot compatibility check list */
448 return !!migration_incoming_get_current()->transport_data; in migrate_incoming_started()
462 error_setg(errp, "RDMA and postcopy-ram can't be used together"); in migrate_rdma_caps_check()
470 * @migration_caps_check - check capability compatibility
484 warn_report("zero-blocks capability is deprecated"); in migrate_caps_check()
509 error_setg(errp, "Postcopy is not compatible with ignore-shared"); in migrate_caps_check()
518 * Check if 'background-snapshot' capability is supported by in migrate_caps_check()
523 error_setg(errp, "Background-snapshot is not supported by host kernel"); in migrate_caps_check()
527 error_setg(errp, "Background-snapshot is not compatible " in migrate_caps_check()
534 * incompatible with 'background-snapshot'. in migrate_caps_check()
540 "Background-snapshot is not compatible with %s", in migrate_caps_check()
554 "Zero copy only available for non-compressed non-TLS multifd migration"); in migrate_caps_check()
567 error_setg(errp, "Postcopy preempt requires postcopy-ram"); in migrate_caps_check()
587 error_setg(errp, "Capability 'switchover-ack' requires capability " in migrate_caps_check()
588 "'return-path'"); in migrate_caps_check()
594 error_setg(errp, "dirty-limit conflicts with auto-converge" in migrate_caps_check()
600 error_setg(errp, "dirty-limit requires KVM with accelerator" in migrate_caps_check()
601 " property 'dirty-ring-size' set"); in migrate_caps_check()
616 "Mapped-ram migration is incompatible with xbzrle"); in migrate_caps_check()
622 "Mapped-ram migration is incompatible with postcopy"); in migrate_caps_check()
646 caps->capability = i; in qmp_query_migrate_capabilities()
647 caps->state = s->capabilities[i]; in qmp_query_migrate_capabilities()
666 memcpy(new_caps, s->capabilities, sizeof(new_caps)); in qmp_migrate_set_capabilities()
667 for (cap = params; cap; cap = cap->next) { in qmp_migrate_set_capabilities()
668 new_caps[cap->value->capability] = cap->value->state; in qmp_migrate_set_capabilities()
671 if (!migrate_caps_check(s->capabilities, new_caps, errp)) { in qmp_migrate_set_capabilities()
675 for (cap = params; cap; cap = cap->next) { in qmp_migrate_set_capabilities()
676 s->capabilities[cap->value->capability] = cap->value->state; in qmp_migrate_set_capabilities()
686 return s->parameters.block_bitmap_mapping; in migrate_block_bitmap_mapping()
693 return s->parameters.has_block_bitmap_mapping; in migrate_has_block_bitmap_mapping()
700 return s->parameters.x_checkpoint_delay; in migrate_checkpoint_delay()
707 return s->parameters.cpu_throttle_increment; in migrate_cpu_throttle_increment()
714 return s->parameters.cpu_throttle_initial; in migrate_cpu_throttle_initial()
721 return s->parameters.cpu_throttle_tailslow; in migrate_cpu_throttle_tailslow()
729 * O_DIRECT is only supported with mapped-ram and multifd. in migrate_direct_io()
731 * mapped-ram is needed because filesystems impose restrictions on in migrate_direct_io()
738 return s->parameters.direct_io && in migrate_direct_io()
739 s->capabilities[MIGRATION_CAPABILITY_MAPPED_RAM] && in migrate_direct_io()
740 s->capabilities[MIGRATION_CAPABILITY_MULTIFD]; in migrate_direct_io()
747 return s->parameters.downtime_limit; in migrate_downtime_limit()
754 return s->parameters.max_cpu_throttle; in migrate_max_cpu_throttle()
761 return s->parameters.max_bandwidth; in migrate_max_bandwidth()
768 return s->parameters.avail_switchover_bandwidth; in migrate_avail_switchover_bandwidth()
775 return s->parameters.max_postcopy_bandwidth; in migrate_max_postcopy_bandwidth()
783 mode = migrate_get_current()->parameters.mode; in migrate_mode()
794 return s->parameters.multifd_channels; in migrate_multifd_channels()
801 assert(s->parameters.multifd_compression < MULTIFD_COMPRESSION__MAX); in migrate_multifd_compression()
802 return s->parameters.multifd_compression; in migrate_multifd_compression()
809 return s->parameters.multifd_zlib_level; in migrate_multifd_zlib_level()
816 return s->parameters.multifd_qatzip_level; in migrate_multifd_qatzip_level()
823 return s->parameters.multifd_zstd_level; in migrate_multifd_zstd_level()
830 return s->parameters.throttle_trigger_threshold; in migrate_throttle_trigger_threshold()
837 return s->parameters.tls_authz; in migrate_tls_authz()
844 return s->parameters.tls_creds; in migrate_tls_creds()
851 return s->parameters.tls_hostname; in migrate_tls_hostname()
858 return s->parameters.x_vcpu_dirty_limit_period; in migrate_vcpu_dirty_limit_period()
865 return s->parameters.xbzrle_cache_size; in migrate_xbzrle_cache_size()
872 return s->parameters.zero_page_detection; in migrate_zero_page_detection()
883 ap.initial = s->parameters.announce_initial; in migrate_announce_params()
884 ap.max = s->parameters.announce_max; in migrate_announce_params()
885 ap.rounds = s->parameters.announce_rounds; in migrate_announce_params()
886 ap.step = s->parameters.announce_step; in migrate_announce_params()
898 params->has_throttle_trigger_threshold = true; in qmp_query_migrate_parameters()
899 params->throttle_trigger_threshold = s->parameters.throttle_trigger_threshold; in qmp_query_migrate_parameters()
900 params->has_cpu_throttle_initial = true; in qmp_query_migrate_parameters()
901 params->cpu_throttle_initial = s->parameters.cpu_throttle_initial; in qmp_query_migrate_parameters()
902 params->has_cpu_throttle_increment = true; in qmp_query_migrate_parameters()
903 params->cpu_throttle_increment = s->parameters.cpu_throttle_increment; in qmp_query_migrate_parameters()
904 params->has_cpu_throttle_tailslow = true; in qmp_query_migrate_parameters()
905 params->cpu_throttle_tailslow = s->parameters.cpu_throttle_tailslow; in qmp_query_migrate_parameters()
906 params->tls_creds = g_strdup(s->parameters.tls_creds); in qmp_query_migrate_parameters()
907 params->tls_hostname = g_strdup(s->parameters.tls_hostname); in qmp_query_migrate_parameters()
908 params->tls_authz = g_strdup(s->parameters.tls_authz ? in qmp_query_migrate_parameters()
909 s->parameters.tls_authz : ""); in qmp_query_migrate_parameters()
910 params->has_max_bandwidth = true; in qmp_query_migrate_parameters()
911 params->max_bandwidth = s->parameters.max_bandwidth; in qmp_query_migrate_parameters()
912 params->has_avail_switchover_bandwidth = true; in qmp_query_migrate_parameters()
913 params->avail_switchover_bandwidth = s->parameters.avail_switchover_bandwidth; in qmp_query_migrate_parameters()
914 params->has_downtime_limit = true; in qmp_query_migrate_parameters()
915 params->downtime_limit = s->parameters.downtime_limit; in qmp_query_migrate_parameters()
916 params->has_x_checkpoint_delay = true; in qmp_query_migrate_parameters()
917 params->x_checkpoint_delay = s->parameters.x_checkpoint_delay; in qmp_query_migrate_parameters()
918 params->has_multifd_channels = true; in qmp_query_migrate_parameters()
919 params->multifd_channels = s->parameters.multifd_channels; in qmp_query_migrate_parameters()
920 params->has_multifd_compression = true; in qmp_query_migrate_parameters()
921 params->multifd_compression = s->parameters.multifd_compression; in qmp_query_migrate_parameters()
922 params->has_multifd_zlib_level = true; in qmp_query_migrate_parameters()
923 params->multifd_zlib_level = s->parameters.multifd_zlib_level; in qmp_query_migrate_parameters()
924 params->has_multifd_qatzip_level = true; in qmp_query_migrate_parameters()
925 params->multifd_qatzip_level = s->parameters.multifd_qatzip_level; in qmp_query_migrate_parameters()
926 params->has_multifd_zstd_level = true; in qmp_query_migrate_parameters()
927 params->multifd_zstd_level = s->parameters.multifd_zstd_level; in qmp_query_migrate_parameters()
928 params->has_xbzrle_cache_size = true; in qmp_query_migrate_parameters()
929 params->xbzrle_cache_size = s->parameters.xbzrle_cache_size; in qmp_query_migrate_parameters()
930 params->has_max_postcopy_bandwidth = true; in qmp_query_migrate_parameters()
931 params->max_postcopy_bandwidth = s->parameters.max_postcopy_bandwidth; in qmp_query_migrate_parameters()
932 params->has_max_cpu_throttle = true; in qmp_query_migrate_parameters()
933 params->max_cpu_throttle = s->parameters.max_cpu_throttle; in qmp_query_migrate_parameters()
934 params->has_announce_initial = true; in qmp_query_migrate_parameters()
935 params->announce_initial = s->parameters.announce_initial; in qmp_query_migrate_parameters()
936 params->has_announce_max = true; in qmp_query_migrate_parameters()
937 params->announce_max = s->parameters.announce_max; in qmp_query_migrate_parameters()
938 params->has_announce_rounds = true; in qmp_query_migrate_parameters()
939 params->announce_rounds = s->parameters.announce_rounds; in qmp_query_migrate_parameters()
940 params->has_announce_step = true; in qmp_query_migrate_parameters()
941 params->announce_step = s->parameters.announce_step; in qmp_query_migrate_parameters()
943 if (s->parameters.has_block_bitmap_mapping) { in qmp_query_migrate_parameters()
944 params->has_block_bitmap_mapping = true; in qmp_query_migrate_parameters()
945 params->block_bitmap_mapping = in qmp_query_migrate_parameters()
947 s->parameters.block_bitmap_mapping); in qmp_query_migrate_parameters()
950 params->has_x_vcpu_dirty_limit_period = true; in qmp_query_migrate_parameters()
951 params->x_vcpu_dirty_limit_period = s->parameters.x_vcpu_dirty_limit_period; in qmp_query_migrate_parameters()
952 params->has_vcpu_dirty_limit = true; in qmp_query_migrate_parameters()
953 params->vcpu_dirty_limit = s->parameters.vcpu_dirty_limit; in qmp_query_migrate_parameters()
954 params->has_mode = true; in qmp_query_migrate_parameters()
955 params->mode = s->parameters.mode; in qmp_query_migrate_parameters()
956 params->has_zero_page_detection = true; in qmp_query_migrate_parameters()
957 params->zero_page_detection = s->parameters.zero_page_detection; in qmp_query_migrate_parameters()
958 params->has_direct_io = true; in qmp_query_migrate_parameters()
959 params->direct_io = s->parameters.direct_io; in qmp_query_migrate_parameters()
966 params->tls_hostname = g_strdup(""); in migrate_params_init()
967 params->tls_creds = g_strdup(""); in migrate_params_init()
970 params->has_throttle_trigger_threshold = true; in migrate_params_init()
971 params->has_cpu_throttle_initial = true; in migrate_params_init()
972 params->has_cpu_throttle_increment = true; in migrate_params_init()
973 params->has_cpu_throttle_tailslow = true; in migrate_params_init()
974 params->has_max_bandwidth = true; in migrate_params_init()
975 params->has_downtime_limit = true; in migrate_params_init()
976 params->has_x_checkpoint_delay = true; in migrate_params_init()
977 params->has_multifd_channels = true; in migrate_params_init()
978 params->has_multifd_compression = true; in migrate_params_init()
979 params->has_multifd_zlib_level = true; in migrate_params_init()
980 params->has_multifd_qatzip_level = true; in migrate_params_init()
981 params->has_multifd_zstd_level = true; in migrate_params_init()
982 params->has_xbzrle_cache_size = true; in migrate_params_init()
983 params->has_max_postcopy_bandwidth = true; in migrate_params_init()
984 params->has_max_cpu_throttle = true; in migrate_params_init()
985 params->has_announce_initial = true; in migrate_params_init()
986 params->has_announce_max = true; in migrate_params_init()
987 params->has_announce_rounds = true; in migrate_params_init()
988 params->has_announce_step = true; in migrate_params_init()
989 params->has_x_vcpu_dirty_limit_period = true; in migrate_params_init()
990 params->has_vcpu_dirty_limit = true; in migrate_params_init()
991 params->has_mode = true; in migrate_params_init()
992 params->has_zero_page_detection = true; in migrate_params_init()
993 params->has_direct_io = true; in migrate_params_init()
1004 if (params->has_throttle_trigger_threshold && in migrate_params_check()
1005 (params->throttle_trigger_threshold < 1 || in migrate_params_check()
1006 params->throttle_trigger_threshold > 100)) { in migrate_params_check()
1013 if (params->has_cpu_throttle_initial && in migrate_params_check()
1014 (params->cpu_throttle_initial < 1 || in migrate_params_check()
1015 params->cpu_throttle_initial > 99)) { in migrate_params_check()
1022 if (params->has_cpu_throttle_increment && in migrate_params_check()
1023 (params->cpu_throttle_increment < 1 || in migrate_params_check()
1024 params->cpu_throttle_increment > 99)) { in migrate_params_check()
1031 if (params->has_max_bandwidth && (params->max_bandwidth > SIZE_MAX)) { in migrate_params_check()
1039 if (params->has_avail_switchover_bandwidth && in migrate_params_check()
1040 (params->avail_switchover_bandwidth > SIZE_MAX)) { in migrate_params_check()
1048 if (params->has_downtime_limit && in migrate_params_check()
1049 (params->downtime_limit > MAX_MIGRATE_DOWNTIME)) { in migrate_params_check()
1059 if (params->has_multifd_channels && (params->multifd_channels < 1)) { in migrate_params_check()
1066 if (params->has_multifd_zlib_level && in migrate_params_check()
1067 (params->multifd_zlib_level > 9)) { in migrate_params_check()
1073 if (params->has_multifd_qatzip_level && in migrate_params_check()
1074 ((params->multifd_qatzip_level > 9) || in migrate_params_check()
1075 (params->multifd_qatzip_level < 1))) { in migrate_params_check()
1081 if (params->has_multifd_zstd_level && in migrate_params_check()
1082 (params->multifd_zstd_level > 20)) { in migrate_params_check()
1088 if (params->has_xbzrle_cache_size && in migrate_params_check()
1089 (params->xbzrle_cache_size < qemu_target_page_size() || in migrate_params_check()
1090 !is_power_of_2(params->xbzrle_cache_size))) { in migrate_params_check()
1097 if (params->has_max_cpu_throttle && in migrate_params_check()
1098 (params->max_cpu_throttle < params->cpu_throttle_initial || in migrate_params_check()
1099 params->max_cpu_throttle > 99)) { in migrate_params_check()
1106 if (params->has_announce_initial && in migrate_params_check()
1107 params->announce_initial > 100000) { in migrate_params_check()
1113 if (params->has_announce_max && in migrate_params_check()
1114 params->announce_max > 100000) { in migrate_params_check()
1120 if (params->has_announce_rounds && in migrate_params_check()
1121 params->announce_rounds > 1000) { in migrate_params_check()
1127 if (params->has_announce_step && in migrate_params_check()
1128 (params->announce_step < 1 || in migrate_params_check()
1129 params->announce_step > 10000)) { in migrate_params_check()
1136 if (params->has_block_bitmap_mapping && in migrate_params_check()
1137 !check_dirty_bitmap_mig_alias_map(params->block_bitmap_mapping, errp)) { in migrate_params_check()
1138 error_prepend(errp, "Invalid mapping given for block-bitmap-mapping: "); in migrate_params_check()
1144 ((params->has_multifd_compression && params->multifd_compression) || in migrate_params_check()
1145 (params->tls_creds && *params->tls_creds))) { in migrate_params_check()
1147 "Zero copy only available for non-compressed non-TLS multifd migration"); in migrate_params_check()
1155 "Mapped-ram only available for non-compressed non-TLS multifd migration"); in migrate_params_check()
1159 if (params->has_x_vcpu_dirty_limit_period && in migrate_params_check()
1160 (params->x_vcpu_dirty_limit_period < 1 || in migrate_params_check()
1161 params->x_vcpu_dirty_limit_period > 1000)) { in migrate_params_check()
1163 "x-vcpu-dirty-limit-period", in migrate_params_check()
1168 if (params->has_vcpu_dirty_limit && in migrate_params_check()
1169 (params->vcpu_dirty_limit < 1)) { in migrate_params_check()
1175 if (params->has_direct_io && params->direct_io && !qemu_has_direct_io()) { in migrate_params_check()
1176 error_setg(errp, "No build-time support for direct-io"); in migrate_params_check()
1186 *dest = migrate_get_current()->parameters; in migrate_params_test_apply()
1190 if (params->has_throttle_trigger_threshold) { in migrate_params_test_apply()
1191 dest->throttle_trigger_threshold = params->throttle_trigger_threshold; in migrate_params_test_apply()
1194 if (params->has_cpu_throttle_initial) { in migrate_params_test_apply()
1195 dest->cpu_throttle_initial = params->cpu_throttle_initial; in migrate_params_test_apply()
1198 if (params->has_cpu_throttle_increment) { in migrate_params_test_apply()
1199 dest->cpu_throttle_increment = params->cpu_throttle_increment; in migrate_params_test_apply()
1202 if (params->has_cpu_throttle_tailslow) { in migrate_params_test_apply()
1203 dest->cpu_throttle_tailslow = params->cpu_throttle_tailslow; in migrate_params_test_apply()
1206 if (params->tls_creds) { in migrate_params_test_apply()
1207 assert(params->tls_creds->type == QTYPE_QSTRING); in migrate_params_test_apply()
1208 dest->tls_creds = params->tls_creds->u.s; in migrate_params_test_apply()
1211 if (params->tls_hostname) { in migrate_params_test_apply()
1212 assert(params->tls_hostname->type == QTYPE_QSTRING); in migrate_params_test_apply()
1213 dest->tls_hostname = params->tls_hostname->u.s; in migrate_params_test_apply()
1216 if (params->tls_authz) { in migrate_params_test_apply()
1217 assert(params->tls_authz->type == QTYPE_QSTRING); in migrate_params_test_apply()
1218 dest->tls_authz = params->tls_authz->u.s; in migrate_params_test_apply()
1221 if (params->has_max_bandwidth) { in migrate_params_test_apply()
1222 dest->max_bandwidth = params->max_bandwidth; in migrate_params_test_apply()
1225 if (params->has_avail_switchover_bandwidth) { in migrate_params_test_apply()
1226 dest->avail_switchover_bandwidth = params->avail_switchover_bandwidth; in migrate_params_test_apply()
1229 if (params->has_downtime_limit) { in migrate_params_test_apply()
1230 dest->downtime_limit = params->downtime_limit; in migrate_params_test_apply()
1233 if (params->has_x_checkpoint_delay) { in migrate_params_test_apply()
1234 dest->x_checkpoint_delay = params->x_checkpoint_delay; in migrate_params_test_apply()
1237 if (params->has_multifd_channels) { in migrate_params_test_apply()
1238 dest->multifd_channels = params->multifd_channels; in migrate_params_test_apply()
1240 if (params->has_multifd_compression) { in migrate_params_test_apply()
1241 dest->multifd_compression = params->multifd_compression; in migrate_params_test_apply()
1243 if (params->has_multifd_qatzip_level) { in migrate_params_test_apply()
1244 dest->multifd_qatzip_level = params->multifd_qatzip_level; in migrate_params_test_apply()
1246 if (params->has_multifd_zlib_level) { in migrate_params_test_apply()
1247 dest->multifd_zlib_level = params->multifd_zlib_level; in migrate_params_test_apply()
1249 if (params->has_multifd_zstd_level) { in migrate_params_test_apply()
1250 dest->multifd_zstd_level = params->multifd_zstd_level; in migrate_params_test_apply()
1252 if (params->has_xbzrle_cache_size) { in migrate_params_test_apply()
1253 dest->xbzrle_cache_size = params->xbzrle_cache_size; in migrate_params_test_apply()
1255 if (params->has_max_postcopy_bandwidth) { in migrate_params_test_apply()
1256 dest->max_postcopy_bandwidth = params->max_postcopy_bandwidth; in migrate_params_test_apply()
1258 if (params->has_max_cpu_throttle) { in migrate_params_test_apply()
1259 dest->max_cpu_throttle = params->max_cpu_throttle; in migrate_params_test_apply()
1261 if (params->has_announce_initial) { in migrate_params_test_apply()
1262 dest->announce_initial = params->announce_initial; in migrate_params_test_apply()
1264 if (params->has_announce_max) { in migrate_params_test_apply()
1265 dest->announce_max = params->announce_max; in migrate_params_test_apply()
1267 if (params->has_announce_rounds) { in migrate_params_test_apply()
1268 dest->announce_rounds = params->announce_rounds; in migrate_params_test_apply()
1270 if (params->has_announce_step) { in migrate_params_test_apply()
1271 dest->announce_step = params->announce_step; in migrate_params_test_apply()
1274 if (params->has_block_bitmap_mapping) { in migrate_params_test_apply()
1275 dest->has_block_bitmap_mapping = true; in migrate_params_test_apply()
1276 dest->block_bitmap_mapping = params->block_bitmap_mapping; in migrate_params_test_apply()
1279 if (params->has_x_vcpu_dirty_limit_period) { in migrate_params_test_apply()
1280 dest->x_vcpu_dirty_limit_period = in migrate_params_test_apply()
1281 params->x_vcpu_dirty_limit_period; in migrate_params_test_apply()
1283 if (params->has_vcpu_dirty_limit) { in migrate_params_test_apply()
1284 dest->vcpu_dirty_limit = params->vcpu_dirty_limit; in migrate_params_test_apply()
1287 if (params->has_mode) { in migrate_params_test_apply()
1288 dest->mode = params->mode; in migrate_params_test_apply()
1291 if (params->has_zero_page_detection) { in migrate_params_test_apply()
1292 dest->zero_page_detection = params->zero_page_detection; in migrate_params_test_apply()
1295 if (params->has_direct_io) { in migrate_params_test_apply()
1296 dest->direct_io = params->direct_io; in migrate_params_test_apply()
1306 if (params->has_throttle_trigger_threshold) { in migrate_params_apply()
1307 s->parameters.throttle_trigger_threshold = params->throttle_trigger_threshold; in migrate_params_apply()
1310 if (params->has_cpu_throttle_initial) { in migrate_params_apply()
1311 s->parameters.cpu_throttle_initial = params->cpu_throttle_initial; in migrate_params_apply()
1314 if (params->has_cpu_throttle_increment) { in migrate_params_apply()
1315 s->parameters.cpu_throttle_increment = params->cpu_throttle_increment; in migrate_params_apply()
1318 if (params->has_cpu_throttle_tailslow) { in migrate_params_apply()
1319 s->parameters.cpu_throttle_tailslow = params->cpu_throttle_tailslow; in migrate_params_apply()
1322 if (params->tls_creds) { in migrate_params_apply()
1323 g_free(s->parameters.tls_creds); in migrate_params_apply()
1324 assert(params->tls_creds->type == QTYPE_QSTRING); in migrate_params_apply()
1325 s->parameters.tls_creds = g_strdup(params->tls_creds->u.s); in migrate_params_apply()
1328 if (params->tls_hostname) { in migrate_params_apply()
1329 g_free(s->parameters.tls_hostname); in migrate_params_apply()
1330 assert(params->tls_hostname->type == QTYPE_QSTRING); in migrate_params_apply()
1331 s->parameters.tls_hostname = g_strdup(params->tls_hostname->u.s); in migrate_params_apply()
1334 if (params->tls_authz) { in migrate_params_apply()
1335 g_free(s->parameters.tls_authz); in migrate_params_apply()
1336 assert(params->tls_authz->type == QTYPE_QSTRING); in migrate_params_apply()
1337 s->parameters.tls_authz = g_strdup(params->tls_authz->u.s); in migrate_params_apply()
1340 if (params->has_max_bandwidth) { in migrate_params_apply()
1341 s->parameters.max_bandwidth = params->max_bandwidth; in migrate_params_apply()
1342 if (s->to_dst_file && !migration_in_postcopy()) { in migrate_params_apply()
1343 migration_rate_set(s->parameters.max_bandwidth); in migrate_params_apply()
1347 if (params->has_avail_switchover_bandwidth) { in migrate_params_apply()
1348 s->parameters.avail_switchover_bandwidth = params->avail_switchover_bandwidth; in migrate_params_apply()
1351 if (params->has_downtime_limit) { in migrate_params_apply()
1352 s->parameters.downtime_limit = params->downtime_limit; in migrate_params_apply()
1355 if (params->has_x_checkpoint_delay) { in migrate_params_apply()
1356 s->parameters.x_checkpoint_delay = params->x_checkpoint_delay; in migrate_params_apply()
1360 if (params->has_multifd_channels) { in migrate_params_apply()
1361 s->parameters.multifd_channels = params->multifd_channels; in migrate_params_apply()
1363 if (params->has_multifd_compression) { in migrate_params_apply()
1364 s->parameters.multifd_compression = params->multifd_compression; in migrate_params_apply()
1366 if (params->has_multifd_qatzip_level) { in migrate_params_apply()
1367 s->parameters.multifd_qatzip_level = params->multifd_qatzip_level; in migrate_params_apply()
1369 if (params->has_multifd_zlib_level) { in migrate_params_apply()
1370 s->parameters.multifd_zlib_level = params->multifd_zlib_level; in migrate_params_apply()
1372 if (params->has_multifd_zstd_level) { in migrate_params_apply()
1373 s->parameters.multifd_zstd_level = params->multifd_zstd_level; in migrate_params_apply()
1375 if (params->has_xbzrle_cache_size) { in migrate_params_apply()
1376 s->parameters.xbzrle_cache_size = params->xbzrle_cache_size; in migrate_params_apply()
1377 xbzrle_cache_resize(params->xbzrle_cache_size, errp); in migrate_params_apply()
1379 if (params->has_max_postcopy_bandwidth) { in migrate_params_apply()
1380 s->parameters.max_postcopy_bandwidth = params->max_postcopy_bandwidth; in migrate_params_apply()
1381 if (s->to_dst_file && migration_in_postcopy()) { in migrate_params_apply()
1382 migration_rate_set(s->parameters.max_postcopy_bandwidth); in migrate_params_apply()
1385 if (params->has_max_cpu_throttle) { in migrate_params_apply()
1386 s->parameters.max_cpu_throttle = params->max_cpu_throttle; in migrate_params_apply()
1388 if (params->has_announce_initial) { in migrate_params_apply()
1389 s->parameters.announce_initial = params->announce_initial; in migrate_params_apply()
1391 if (params->has_announce_max) { in migrate_params_apply()
1392 s->parameters.announce_max = params->announce_max; in migrate_params_apply()
1394 if (params->has_announce_rounds) { in migrate_params_apply()
1395 s->parameters.announce_rounds = params->announce_rounds; in migrate_params_apply()
1397 if (params->has_announce_step) { in migrate_params_apply()
1398 s->parameters.announce_step = params->announce_step; in migrate_params_apply()
1401 if (params->has_block_bitmap_mapping) { in migrate_params_apply()
1403 s->parameters.block_bitmap_mapping); in migrate_params_apply()
1405 s->parameters.has_block_bitmap_mapping = true; in migrate_params_apply()
1406 s->parameters.block_bitmap_mapping = in migrate_params_apply()
1408 params->block_bitmap_mapping); in migrate_params_apply()
1411 if (params->has_x_vcpu_dirty_limit_period) { in migrate_params_apply()
1412 s->parameters.x_vcpu_dirty_limit_period = in migrate_params_apply()
1413 params->x_vcpu_dirty_limit_period; in migrate_params_apply()
1415 if (params->has_vcpu_dirty_limit) { in migrate_params_apply()
1416 s->parameters.vcpu_dirty_limit = params->vcpu_dirty_limit; in migrate_params_apply()
1419 if (params->has_mode) { in migrate_params_apply()
1420 s->parameters.mode = params->mode; in migrate_params_apply()
1423 if (params->has_zero_page_detection) { in migrate_params_apply()
1424 s->parameters.zero_page_detection = params->zero_page_detection; in migrate_params_apply()
1427 if (params->has_direct_io) { in migrate_params_apply()
1428 s->parameters.direct_io = params->direct_io; in migrate_params_apply()
1437 if (params->tls_creds in qmp_migrate_set_parameters()
1438 && params->tls_creds->type == QTYPE_QNULL) { in qmp_migrate_set_parameters()
1439 qobject_unref(params->tls_creds->u.n); in qmp_migrate_set_parameters()
1440 params->tls_creds->type = QTYPE_QSTRING; in qmp_migrate_set_parameters()
1441 params->tls_creds->u.s = strdup(""); in qmp_migrate_set_parameters()
1443 if (params->tls_hostname in qmp_migrate_set_parameters()
1444 && params->tls_hostname->type == QTYPE_QNULL) { in qmp_migrate_set_parameters()
1445 qobject_unref(params->tls_hostname->u.n); in qmp_migrate_set_parameters()
1446 params->tls_hostname->type = QTYPE_QSTRING; in qmp_migrate_set_parameters()
1447 params->tls_hostname->u.s = strdup(""); in qmp_migrate_set_parameters()
1449 if (params->tls_authz in qmp_migrate_set_parameters()
1450 && params->tls_authz->type == QTYPE_QNULL) { in qmp_migrate_set_parameters()
1451 qobject_unref(params->tls_authz->u.n); in qmp_migrate_set_parameters()
1452 params->tls_authz->type = QTYPE_QSTRING; in qmp_migrate_set_parameters()
1453 params->tls_authz->u.s = strdup(""); in qmp_migrate_set_parameters()