36
#include "options.h"
37
#include "migration.h"
38
39
-static void migration_global_dump(Monitor *mon)
39
+static void migration_global_dump(MonitorHMP *hmp)
40
{
41
MigrationState *ms = migrate_get_current();
42
43
- monitor_printf(mon, "Globals:\n");
44
- monitor_printf(mon, " store-global-state: %s\n",
45
- ms->store_global_state ? "on" : "off");
46
- monitor_printf(mon, " only-migratable: %s\n",
47
- only_migratable ? "on" : "off");
48
- monitor_printf(mon, " send-configuration: %s\n",
49
- ms->send_configuration ? "on" : "off");
50
- monitor_printf(mon, " send-section-footer: %s\n",
51
- ms->send_section_footer ? "on" : "off");
52
- monitor_printf(mon, " send-switchover-start: %s\n",
53
- ms->send_switchover_start ? "on" : "off");
54
- monitor_printf(mon, " clear-bitmap-shift: %u\n",
55
- ms->clear_bitmap_shift);
43
+ monitor_hmp_printf(hmp, "Globals:\n");
44
+ monitor_hmp_printf(hmp, " store-global-state: %s\n",
45
+ ms->store_global_state ? "on" : "off");
46
+ monitor_hmp_printf(hmp, " only-migratable: %s\n",
47
+ only_migratable ? "on" : "off");
48
+ monitor_hmp_printf(hmp, " send-configuration: %s\n",
49
+ ms->send_configuration ? "on" : "off");
50
+ monitor_hmp_printf(hmp, " send-section-footer: %s\n",
51
+ ms->send_section_footer ? "on" : "off");
52
+ monitor_hmp_printf(hmp, " send-switchover-start: %s\n",
53
+ ms->send_switchover_start ? "on" : "off");
54
+ monitor_hmp_printf(hmp, " clear-bitmap-shift: %u\n",
55
+ ms->clear_bitmap_shift);
56
}
57
58
static const gchar *format_time_str(uint64_t us)
68
return g_strdup_printf("%"PRIu64" %s", us, units[index]);
69
}
70
71
-static void migration_dump_blocktime(Monitor *mon, MigrationInfo *info)
71
+static void migration_dump_blocktime(MonitorHMP *hmp, MigrationInfo *info)
72
{
73
if (info->has_postcopy_blocktime) {
74
- monitor_printf(mon, "Postcopy Blocktime (ms): %" PRIu32 "\n",
75
- info->postcopy_blocktime);
74
+ monitor_hmp_printf(hmp, "Postcopy Blocktime (ms): %" PRIu32 "\n",
75
+ info->postcopy_blocktime);
76
}
77
78
if (info->has_postcopy_vcpu_blocktime) {
80
const char *sep = "";
81
int count = 0;
82
83
- monitor_printf(mon, "Postcopy vCPU Blocktime (ms):\n [");
83
+ monitor_hmp_printf(hmp, "Postcopy vCPU Blocktime (ms):\n [");
84
85
while (item) {
86
- monitor_printf(mon, "%s%"PRIu32, sep, item->value);
86
+ monitor_hmp_printf(hmp, "%s%"PRIu32, sep, item->value);
87
item = item->next;
88
/* Each line 10 vcpu results, newline if there's more */
89
sep = ((++count % 10 == 0) && item) ? ",\n " : ", ";
90
}
91
- monitor_printf(mon, "]\n");
91
+ monitor_hmp_printf(hmp, "]\n");
92
}
93
94
if (info->has_postcopy_latency) {
95
- monitor_printf(mon, "Postcopy Latency (ns): %" PRIu64 "\n",
96
- info->postcopy_latency);
95
+ monitor_hmp_printf(hmp, "Postcopy Latency (ns): %" PRIu64 "\n",
96
+ info->postcopy_latency);
97
}
98
99
if (info->has_postcopy_non_vcpu_latency) {
100
- monitor_printf(mon, "Postcopy non-vCPU Latency (ns): %" PRIu64 "\n",
101
- info->postcopy_non_vcpu_latency);
100
+ monitor_hmp_printf(hmp, "Postcopy non-vCPU Latency (ns): %" PRIu64 "\n",
101
+ info->postcopy_non_vcpu_latency);
102
}
103
104
if (info->has_postcopy_vcpu_latency) {
106
const char *sep = "";
107
int count = 0;
108
109
- monitor_printf(mon, "Postcopy vCPU Latencies (ns):\n [");
109
+ monitor_hmp_printf(hmp, "Postcopy vCPU Latencies (ns):\n [");
110
111
while (item) {
112
- monitor_printf(mon, "%s%"PRIu64, sep, item->value);
112
+ monitor_hmp_printf(hmp, "%s%"PRIu64, sep, item->value);
113
item = item->next;
114
/* Each line 10 vcpu results, newline if there's more */
115
sep = ((++count % 10 == 0) && item) ? ",\n " : ", ";
116
}
117
- monitor_printf(mon, "]\n");
117
+ monitor_hmp_printf(hmp, "]\n");
118
}
119
120
if (info->has_postcopy_latency_dist) {
121
uint64List *item = info->postcopy_latency_dist;
122
int count = 0;
123
124
- monitor_printf(mon, "Postcopy Latency Distribution:\n");
124
+ monitor_hmp_printf(hmp, "Postcopy Latency Distribution:\n");
125
126
while (item) {
127
g_autofree const gchar *from = format_time_str(1UL << count);
128
g_autofree const gchar *to = format_time_str(1UL << (count + 1));
129
130
- monitor_printf(mon, " [ %8s - %8s ]: %10"PRIu64"\n",
131
- from, to, item->value);
130
+ monitor_hmp_printf(hmp, " [ %8s - %8s ]: %10"PRIu64"\n",
131
+ from, to, item->value);
132
item = item->next;
133
count++;
134
}
137
138
void hmp_info_migrate(MonitorHMP *hmp, const QDict *qdict)
139
{
140
- Monitor *mon = MONITOR(hmp);
140
bool show_all = qdict_get_try_bool(qdict, "all", false);
141
MigrationInfo *info;
142
144
145
if (info->blocked_reasons) {
146
strList *reasons = info->blocked_reasons;
148
- monitor_printf(mon, "Outgoing migration blocked:\n");
147
+ monitor_hmp_printf(hmp, "Outgoing migration blocked:\n");
148
while (reasons) {
150
- monitor_printf(mon, " %s\n", reasons->value);
149
+ monitor_hmp_printf(hmp, " %s\n", reasons->value);
150
reasons = reasons->next;
151
}
152
}
153
154
if (info->has_status) {
156
- monitor_printf(mon, "Status: \t\t%s",
157
- MigrationStatus_str(info->status));
155
+ monitor_hmp_printf(hmp, "Status: \t\t%s",
156
+ MigrationStatus_str(info->status));
157
if ((info->status == MIGRATION_STATUS_FAILED ||
158
info->status == MIGRATION_STATUS_POSTCOPY_PAUSED) &&
159
info->error_desc) {
161
- monitor_printf(mon, " (%s)\n", info->error_desc);
160
+ monitor_hmp_printf(hmp, " (%s)\n", info->error_desc);
161
} else {
163
- monitor_printf(mon, "\n");
162
+ monitor_hmp_printf(hmp, "\n");
163
}
164
165
if (info->total_time) {
167
- monitor_printf(mon, "Time (ms): \t\ttotal=%" PRIu64,
168
- info->total_time);
166
+ monitor_hmp_printf(hmp, "Time (ms): \t\ttotal=%" PRIu64,
167
+ info->total_time);
168
if (info->has_setup_time) {
170
- monitor_printf(mon, ", setup=%" PRIu64,
171
- info->setup_time);
169
+ monitor_hmp_printf(hmp, ", setup=%" PRIu64,
170
+ info->setup_time);
171
}
172
if (info->has_expected_downtime) {
174
- monitor_printf(mon, ", exp_down=%" PRIu64,
175
- info->expected_downtime);
173
+ monitor_hmp_printf(hmp, ", exp_down=%" PRIu64,
174
+ info->expected_downtime);
175
}
176
if (info->has_downtime) {
178
- monitor_printf(mon, ", down=%" PRIu64,
179
- info->downtime);
177
+ monitor_hmp_printf(hmp, ", down=%" PRIu64,
178
+ info->downtime);
179
}
181
- monitor_printf(mon, "\n");
180
+ monitor_hmp_printf(hmp, "\n");
181
}
182
}
183
184
if (info->has_remaining) {
185
g_autofree char *remaining = size_to_str(info->remaining);
187
- monitor_printf(mon, "Remaining: \t\t%s\n", remaining);
186
+ monitor_hmp_printf(hmp, "Remaining: \t\t%s\n", remaining);
187
}
188
189
if (info->has_socket_address) {
190
SocketAddressList *addr;
191
193
- monitor_printf(mon, "Sockets: [\n");
192
+ monitor_hmp_printf(hmp, "Sockets: [\n");
193
194
for (addr = info->socket_address; addr; addr = addr->next) {
195
char *s = socket_uri(addr->value);
197
- monitor_printf(mon, "\t%s\n", s);
196
+ monitor_hmp_printf(hmp, "\t%s\n", s);
197
g_free(s);
198
}
200
- monitor_printf(mon, "]\n");
199
+ monitor_hmp_printf(hmp, "]\n");
200
}
201
202
if (info->ram) {
208
g_autofree char *str_multifd = size_to_str(info->ram->multifd_bytes);
209
g_autofree char *str_postcopy = size_to_str(info->ram->postcopy_bytes);
210
212
- monitor_printf(mon, "RAM info:\n");
213
- monitor_printf(mon, " Throughput (Mbps): \t%0.2f\n",
214
- info->ram->mbps);
215
- monitor_printf(mon, " Sizes: \t\tpagesize=%s, total=%s\n",
216
- str_psize, str_total);
217
- monitor_printf(mon, " Transfers: \t\ttransferred=%s, remain=%s\n",
218
- str_transferred, str_remaining);
219
- monitor_printf(mon, " Channels: \t\tprecopy=%s, "
220
- "multifd=%s, postcopy=%s",
221
- str_precopy, str_multifd, str_postcopy);
211
+ monitor_hmp_printf(hmp, "RAM info:\n");
212
+ monitor_hmp_printf(hmp, " Throughput (Mbps): \t%0.2f\n",
213
+ info->ram->mbps);
214
+ monitor_hmp_printf(hmp, " Sizes: \t\tpagesize=%s, total=%s\n",
215
+ str_psize, str_total);
216
+ monitor_hmp_printf(hmp, " Transfers: \t\ttransferred=%s, remain=%s\n",
217
+ str_transferred, str_remaining);
218
+ monitor_hmp_printf(hmp, " Channels: \t\tprecopy=%s, "
219
+ "multifd=%s, postcopy=%s",
220
+ str_precopy, str_multifd, str_postcopy);
221
222
if (info->vfio) {
223
g_autofree char *str_vfio = size_to_str(info->vfio->transferred);
224
226
- monitor_printf(mon, ", vfio=%s", str_vfio);
225
+ monitor_hmp_printf(hmp, ", vfio=%s", str_vfio);
226
}
228
- monitor_printf(mon, "\n");
227
+ monitor_hmp_printf(hmp, "\n");
228
230
- monitor_printf(mon, " Page Types: \tnormal=%" PRIu64
231
- ", zero=%" PRIu64 "\n",
232
- info->ram->normal, info->ram->duplicate);
233
- monitor_printf(mon, " Page Rates (pps): \ttransfer=%" PRIu64,
234
- info->ram->pages_per_second);
229
+ monitor_hmp_printf(hmp, " Page Types: \tnormal=%" PRIu64
230
+ ", zero=%" PRIu64 "\n",
231
+ info->ram->normal, info->ram->duplicate);
232
+ monitor_hmp_printf(hmp, " Page Rates (pps): \ttransfer=%" PRIu64,
233
+ info->ram->pages_per_second);
234
if (info->ram->dirty_pages_rate) {
236
- monitor_printf(mon, ", dirty=%" PRIu64,
237
- info->ram->dirty_pages_rate);
235
+ monitor_hmp_printf(hmp, ", dirty=%" PRIu64,
236
+ info->ram->dirty_pages_rate);
237
}
239
- monitor_printf(mon, "\n");
238
+ monitor_hmp_printf(hmp, "\n");
239
241
- monitor_printf(mon, " Others: \t\tdirty_syncs=%" PRIu64,
242
- info->ram->dirty_sync_count);
240
+ monitor_hmp_printf(hmp, " Others: \t\tdirty_syncs=%" PRIu64,
241
+ info->ram->dirty_sync_count);
242
if (info->ram->postcopy_requests) {
244
- monitor_printf(mon, ", postcopy_req=%" PRIu64,
245
- info->ram->postcopy_requests);
243
+ monitor_hmp_printf(hmp, ", postcopy_req=%" PRIu64,
244
+ info->ram->postcopy_requests);
245
}
246
if (info->ram->downtime_bytes) {
248
- monitor_printf(mon, ", downtime_bytes=%" PRIu64,
249
- info->ram->downtime_bytes);
247
+ monitor_hmp_printf(hmp, ", downtime_bytes=%" PRIu64,
248
+ info->ram->downtime_bytes);
249
}
250
if (info->ram->dirty_sync_missed_zero_copy) {
252
- monitor_printf(mon, ", zerocopy_fallbacks=%" PRIu64,
253
- info->ram->dirty_sync_missed_zero_copy);
251
+ monitor_hmp_printf(hmp, ", zerocopy_fallbacks=%" PRIu64,
252
+ info->ram->dirty_sync_missed_zero_copy);
253
}
255
- monitor_printf(mon, "\n");
254
+ monitor_hmp_printf(hmp, "\n");
255
}
256
257
if (!show_all) {
258
goto out;
259
}
260
262
- migration_global_dump(mon);
261
+ migration_global_dump(hmp);
262
263
if (info->xbzrle_cache) {
265
- monitor_printf(mon, "XBZRLE: size=%" PRIu64
266
- ", transferred=%" PRIu64
267
- ", pages=%" PRIu64
268
- ", miss=%" PRIu64 "\n"
269
- " miss_rate=%0.2f"
270
- ", encode_rate=%0.2f"
271
- ", overflow=%" PRIu64 "\n",
272
- info->xbzrle_cache->cache_size,
273
- info->xbzrle_cache->bytes,
274
- info->xbzrle_cache->pages,
275
- info->xbzrle_cache->cache_miss,
276
- info->xbzrle_cache->cache_miss_rate,
277
- info->xbzrle_cache->encoding_rate,
278
- info->xbzrle_cache->overflow);
264
+ monitor_hmp_printf(hmp, "XBZRLE: size=%" PRIu64
265
+ ", transferred=%" PRIu64
266
+ ", pages=%" PRIu64
267
+ ", miss=%" PRIu64 "\n"
268
+ " miss_rate=%0.2f"
269
+ ", encode_rate=%0.2f"
270
+ ", overflow=%" PRIu64 "\n",
271
+ info->xbzrle_cache->cache_size,
272
+ info->xbzrle_cache->bytes,
273
+ info->xbzrle_cache->pages,
274
+ info->xbzrle_cache->cache_miss,
275
+ info->xbzrle_cache->cache_miss_rate,
276
+ info->xbzrle_cache->encoding_rate,
277
+ info->xbzrle_cache->overflow);
278
}
279
280
if (info->has_cpu_throttle_percentage) {
282
- monitor_printf(mon, "CPU Throttle (%%): %" PRIu64 "\n",
283
- info->cpu_throttle_percentage);
281
+ monitor_hmp_printf(hmp, "CPU Throttle (%%): %" PRIu64 "\n",
282
+ info->cpu_throttle_percentage);
283
}
284
285
if (info->has_dirty_limit_throttle_time_per_round) {
287
- monitor_printf(mon, "Dirty-limit Throttle (us): %" PRIu64 "\n",
288
- info->dirty_limit_throttle_time_per_round);
286
+ monitor_hmp_printf(hmp, "Dirty-limit Throttle (us): %" PRIu64 "\n",
287
+ info->dirty_limit_throttle_time_per_round);
288
}
289
290
if (info->has_dirty_limit_ring_full_time) {
292
- monitor_printf(mon, "Dirty-limit Ring Full (us): %" PRIu64 "\n",
293
- info->dirty_limit_ring_full_time);
291
+ monitor_hmp_printf(hmp, "Dirty-limit Ring Full (us): %" PRIu64 "\n",
292
+ info->dirty_limit_ring_full_time);
293
}
294
296
- migration_dump_blocktime(mon, info);
295
+ migration_dump_blocktime(hmp, info);
296
out:
297
qapi_free_MigrationInfo(info);
298
}
299
300
void hmp_info_migrate_capabilities(MonitorHMP *hmp, const QDict *qdict)
301
{
303
- Monitor *mon = MONITOR(hmp);
302
MigrationCapabilityStatusList *caps, *cap;
303
304
caps = qmp_query_migrate_capabilities(NULL);
305
306
if (caps) {
307
for (cap = caps; cap; cap = cap->next) {
310
- monitor_printf(mon, "%s: %s\n",
311
- MigrationCapability_str(cap->value->capability),
312
- cap->value->state ? "on" : "off");
308
+ monitor_hmp_printf(hmp, "%s: %s\n",
309
+ MigrationCapability_str(cap->value->capability),
310
+ cap->value->state ? "on" : "off");
311
}
312
}
313
314
qapi_free_MigrationCapabilityStatusList(caps);
315
}
316
319
-static void monitor_print_cpr_exec_command(Monitor *mon, strList *args)
317
+static void monitor_print_cpr_exec_command(MonitorHMP *hmp, strList *args)
318
{
321
- monitor_printf(mon, "%s:",
319
+ monitor_hmp_printf(hmp, "%s:",
320
MigrationParameter_str(MIGRATION_PARAMETER_CPR_EXEC_COMMAND));
321
322
while (args) {
325
- monitor_printf(mon, " %s", args->value);
323
+ monitor_hmp_printf(hmp, " %s", args->value);
324
args = args->next;
325
}
328
- monitor_printf(mon, "\n");
326
+ monitor_hmp_printf(hmp, "\n");
327
}
328
329
void hmp_info_migrate_parameters(MonitorHMP *hmp, const QDict *qdict)
330
{
333
- Monitor *mon = MONITOR(hmp);
331
MigrationParameters *params;
332
MigrationState *s = migrate_get_current();
333
334
params = qmp_query_migrate_parameters(NULL);
335
336
if (params) {
340
- monitor_printf(mon, "%s: %" PRIu64 " ms\n",
337
+ monitor_hmp_printf(hmp, "%s: %" PRIu64 " ms\n",
338
MigrationParameter_str(MIGRATION_PARAMETER_ANNOUNCE_INITIAL),
339
params->announce_initial);
343
- monitor_printf(mon, "%s: %" PRIu64 " ms\n",
340
+ monitor_hmp_printf(hmp, "%s: %" PRIu64 " ms\n",
341
MigrationParameter_str(MIGRATION_PARAMETER_ANNOUNCE_MAX),
342
params->announce_max);
346
- monitor_printf(mon, "%s: %" PRIu64 "\n",
343
+ monitor_hmp_printf(hmp, "%s: %" PRIu64 "\n",
344
MigrationParameter_str(MIGRATION_PARAMETER_ANNOUNCE_ROUNDS),
345
params->announce_rounds);
349
- monitor_printf(mon, "%s: %" PRIu64 " ms\n",
346
+ monitor_hmp_printf(hmp, "%s: %" PRIu64 " ms\n",
347
MigrationParameter_str(MIGRATION_PARAMETER_ANNOUNCE_STEP),
348
params->announce_step);
349
assert(params->has_throttle_trigger_threshold);
353
- monitor_printf(mon, "%s: %u\n",
350
+ monitor_hmp_printf(hmp, "%s: %u\n",
351
MigrationParameter_str(MIGRATION_PARAMETER_THROTTLE_TRIGGER_THRESHOLD),
352
params->throttle_trigger_threshold);
353
assert(params->has_cpu_throttle_initial);
357
- monitor_printf(mon, "%s: %u\n",
354
+ monitor_hmp_printf(hmp, "%s: %u\n",
355
MigrationParameter_str(MIGRATION_PARAMETER_CPU_THROTTLE_INITIAL),
356
params->cpu_throttle_initial);
357
assert(params->has_cpu_throttle_increment);
361
- monitor_printf(mon, "%s: %u\n",
358
+ monitor_hmp_printf(hmp, "%s: %u\n",
359
MigrationParameter_str(MIGRATION_PARAMETER_CPU_THROTTLE_INCREMENT),
360
params->cpu_throttle_increment);
361
assert(params->has_cpu_throttle_tailslow);
365
- monitor_printf(mon, "%s: %s\n",
362
+ monitor_hmp_printf(hmp, "%s: %s\n",
363
MigrationParameter_str(MIGRATION_PARAMETER_CPU_THROTTLE_TAILSLOW),
364
params->cpu_throttle_tailslow ? "on" : "off");
365
assert(params->has_max_cpu_throttle);
369
- monitor_printf(mon, "%s: %u\n",
366
+ monitor_hmp_printf(hmp, "%s: %u\n",
367
MigrationParameter_str(MIGRATION_PARAMETER_MAX_CPU_THROTTLE),
368
params->max_cpu_throttle);
369
assert(params->tls_creds);
373
- monitor_printf(mon, "%s: '%s'\n",
370
+ monitor_hmp_printf(hmp, "%s: '%s'\n",
371
MigrationParameter_str(MIGRATION_PARAMETER_TLS_CREDS),
372
params->tls_creds->u.s);
373
assert(params->tls_hostname);
377
- monitor_printf(mon, "%s: '%s'\n",
374
+ monitor_hmp_printf(hmp, "%s: '%s'\n",
375
MigrationParameter_str(MIGRATION_PARAMETER_TLS_HOSTNAME),
376
params->tls_hostname->u.s);
377
assert(params->tls_authz);
381
- monitor_printf(mon, "%s: '%s'\n",
378
+ monitor_hmp_printf(hmp, "%s: '%s'\n",
379
MigrationParameter_str(MIGRATION_PARAMETER_TLS_AUTHZ),
380
params->tls_authz->u.s);
381
assert(params->has_max_bandwidth);
385
- monitor_printf(mon, "%s: %" PRIu64 " bytes/second\n",
382
+ monitor_hmp_printf(hmp, "%s: %" PRIu64 " bytes/second\n",
383
MigrationParameter_str(MIGRATION_PARAMETER_MAX_BANDWIDTH),
384
params->max_bandwidth);
385
assert(params->has_avail_switchover_bandwidth);
389
- monitor_printf(mon, "%s: %" PRIu64 " bytes/second\n",
386
+ monitor_hmp_printf(hmp, "%s: %" PRIu64 " bytes/second\n",
387
MigrationParameter_str(MIGRATION_PARAMETER_AVAIL_SWITCHOVER_BANDWIDTH),
388
params->avail_switchover_bandwidth);
389
assert(params->has_max_postcopy_bandwidth);
393
- monitor_printf(mon, "%s: %" PRIu64 " bytes/second\n",
390
+ monitor_hmp_printf(hmp, "%s: %" PRIu64 " bytes/second\n",
391
MigrationParameter_str(MIGRATION_PARAMETER_MAX_POSTCOPY_BANDWIDTH),
392
params->max_postcopy_bandwidth);
393
assert(params->has_downtime_limit);
397
- monitor_printf(mon, "%s: %" PRIu64 " ms\n",
394
+ monitor_hmp_printf(hmp, "%s: %" PRIu64 " ms\n",
395
MigrationParameter_str(MIGRATION_PARAMETER_DOWNTIME_LIMIT),
396
params->downtime_limit);
397
assert(params->has_x_checkpoint_delay);
401
- monitor_printf(mon, "%s: %u ms\n",
398
+ monitor_hmp_printf(hmp, "%s: %u ms\n",
399
MigrationParameter_str(MIGRATION_PARAMETER_X_CHECKPOINT_DELAY),
400
params->x_checkpoint_delay);
404
- monitor_printf(mon, "%s: %u\n",
401
+ monitor_hmp_printf(hmp, "%s: %u\n",
402
MigrationParameter_str(MIGRATION_PARAMETER_MULTIFD_CHANNELS),
403
params->multifd_channels);
407
- monitor_printf(mon, "%s: %s\n",
404
+ monitor_hmp_printf(hmp, "%s: %s\n",
405
MigrationParameter_str(MIGRATION_PARAMETER_MULTIFD_COMPRESSION),
406
MultiFDCompression_str(params->multifd_compression));
407
assert(params->has_zero_page_detection);
411
- monitor_printf(mon, "%s: %s\n",
408
+ monitor_hmp_printf(hmp, "%s: %s\n",
409
MigrationParameter_str(MIGRATION_PARAMETER_ZERO_PAGE_DETECTION),
410
qapi_enum_lookup(&ZeroPageDetection_lookup,
411
params->zero_page_detection));
415
- monitor_printf(mon, "%s: %" PRIu64 " bytes\n",
412
+ monitor_hmp_printf(hmp, "%s: %" PRIu64 " bytes\n",
413
MigrationParameter_str(MIGRATION_PARAMETER_XBZRLE_CACHE_SIZE),
414
params->xbzrle_cache_size);
415
416
if (s->has_block_bitmap_mapping) {
417
const BitmapMigrationNodeAliasList *bmnal;
418
422
- monitor_printf(mon, "%s:\n",
423
- MigrationParameter_str(
424
- MIGRATION_PARAMETER_BLOCK_BITMAP_MAPPING));
419
+ monitor_hmp_printf(hmp, "%s:\n",
420
+ MigrationParameter_str(
421
+ MIGRATION_PARAMETER_BLOCK_BITMAP_MAPPING));
422
423
for (bmnal = params->block_bitmap_mapping;
424
bmnal;
427
const BitmapMigrationNodeAlias *bmna = bmnal->value;
428
const BitmapMigrationBitmapAliasList *bmbal;
429
433
- monitor_printf(mon, " '%s' -> '%s'\n",
434
- bmna->node_name, bmna->alias);
430
+ monitor_hmp_printf(hmp, " '%s' -> '%s'\n",
431
+ bmna->node_name, bmna->alias);
432
433
for (bmbal = bmna->bitmaps; bmbal; bmbal = bmbal->next) {
434
const BitmapMigrationBitmapAlias *bmba = bmbal->value;
435
439
- monitor_printf(mon, " '%s' -> '%s'\n",
440
- bmba->name, bmba->alias);
436
+ monitor_hmp_printf(hmp, " '%s' -> '%s'\n",
437
+ bmba->name, bmba->alias);
438
}
439
}
440
}
441
445
- monitor_printf(mon, "%s: %" PRIu64 " ms\n",
442
+ monitor_hmp_printf(hmp, "%s: %" PRIu64 " ms\n",
443
MigrationParameter_str(MIGRATION_PARAMETER_X_VCPU_DIRTY_LIMIT_PERIOD),
444
params->x_vcpu_dirty_limit_period);
445
449
- monitor_printf(mon, "%s: %" PRIu64 " MB/s\n",
446
+ monitor_hmp_printf(hmp, "%s: %" PRIu64 " MB/s\n",
447
MigrationParameter_str(MIGRATION_PARAMETER_VCPU_DIRTY_LIMIT),
448
params->vcpu_dirty_limit);
449
450
assert(params->has_mode);
454
- monitor_printf(mon, "%s: %s\n",
451
+ monitor_hmp_printf(hmp, "%s: %s\n",
452
MigrationParameter_str(MIGRATION_PARAMETER_MODE),
453
qapi_enum_lookup(&MigMode_lookup, params->mode));
454
455
if (params->has_direct_io) {
459
- monitor_printf(mon, "%s: %s\n",
460
- MigrationParameter_str(
461
- MIGRATION_PARAMETER_DIRECT_IO),
462
- params->direct_io ? "on" : "off");
456
+ monitor_hmp_printf(hmp, "%s: %s\n",
457
+ MigrationParameter_str(
458
+ MIGRATION_PARAMETER_DIRECT_IO),
459
+ params->direct_io ? "on" : "off");
460
}
461
462
if (params->has_x_rdma_chunk_size) {
466
- monitor_printf(mon, "%s: %" PRIu64 " bytes\n",
467
- MigrationParameter_str(
468
- MIGRATION_PARAMETER_X_RDMA_CHUNK_SIZE),
469
- params->x_rdma_chunk_size);
463
+ monitor_hmp_printf(hmp, "%s: %" PRIu64 " bytes\n",
464
+ MigrationParameter_str(
465
+ MIGRATION_PARAMETER_X_RDMA_CHUNK_SIZE),
466
+ params->x_rdma_chunk_size);
467
}
468
469
assert(params->has_cpr_exec_command);
473
- monitor_print_cpr_exec_command(mon, params->cpr_exec_command);
470
+ monitor_print_cpr_exec_command(hmp, params->cpr_exec_command);
471
}
472
473
qapi_free_MigrationParameters(params);
876
HMPMigrationStatus *status;
877
878
if (!hmp->use_readline) {
882
- monitor_printf(mon, "terminal does not allow synchronous "
883
- "migration, continuing detached\n");
879
+ monitor_hmp_printf(hmp, "terminal does not allow synchronous "
880
+ "migration, continuing detached\n");
881
return;
882
}
883
monitor_suspend(mon);