Combo Migration/HMP/virtiofs pull

Small fixes all around.
 Ones that are noticeable:
   a) Igor's migration compatibility fix affecting older machine types
      has been seen in the wild
   b) Philippe's autconverge fix should fix an intermittently
      failing migration test.
   c) Mao's makes a small change to the output of 'info
      migrate_parameters'  for tls-authz.
 -----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCAAdFiEERfXHG0oMt/uXep+pBRYzHrxb/ecFAl57WUgACgkQBRYzHrxb
 /eczDA/8CUuiVSZoCoWKMVK35SuG4qUDLIPN6HlJW9di4hseGpwZZkiaWwlFl5Rt
 zAeUxOT88rhl7G2SR1+a41TpByWoQU1+WeOfHMJLOy+AqSxW5Zy1xoXqMlsYalGc
 XE6SU8iqFqqVGleqdVuWOTQtpf6C0aPWG4X/RPMcQUBGaAwiSjfswTPDxBHiW0D2
 4feNsDTESOLNt5cSqQYVYGotEIgREI6FcRAW19xNlgA2XYgWDZ8eAg5kPSE2W4Zp
 ieZ37xoMZU0zCwq+QhBcC6T1p6azbFL0l+DCSXxmQU2EwyrE8XcNdwQ9PcJyjz+z
 RCLyBWTy2VdnLMCto163yxBrjrsSxXbKX1oIjvBsxrp7/j5tO0tMeeestYARSfp6
 IqFqnEMVWe5lc0UUVe+lgiIEFIDK/fy5QCbTUWtIuSpVGH/lzfPJVIojmxCqJjnB
 uoRrRt4Is36p329Pq7kAe8jUMNfHDwlwhwIew27rlvlU+zS4Qhxq0zQ2wbigW6al
 GseH0bGCgsoW7oDqUm2xWwQII3Zj/W/o0/8WKLf0T6Fh1T/rsLwq+HtJKQJufHMb
 3qrEYJACS3VYapWcB7D8AazLWxtznjNrhHKCqAgt03gWpzr6I8E8FRuYbp7Xqd36
 VhDjnOv9a9peroR5CWVxSuuedX3217edGKpIkN9eviMnYcedIZU=
 =AaVo
 -----END PGP SIGNATURE-----

Merge remote-tracking branch 'remotes/dgilbert/tags/pull-migration-20200325b' into staging

Combo Migration/HMP/virtiofs pull

Small fixes all around.
Ones that are noticeable:
  a) Igor's migration compatibility fix affecting older machine types
     has been seen in the wild
  b) Philippe's autconverge fix should fix an intermittently
     failing migration test.
  c) Mao's makes a small change to the output of 'info
     migrate_parameters'  for tls-authz.

# gpg: Signature made Wed 25 Mar 2020 13:14:48 GMT
# gpg:                using RSA key 45F5C71B4A0CB7FB977A9FA90516331EBC5BFDE7
# gpg: Good signature from "Dr. David Alan Gilbert (RH2) <dgilbert@redhat.com>" [full]
# Primary key fingerprint: 45F5 C71B 4A0C B7FB 977A  9FA9 0516 331E BC5B FDE7

* remotes/dgilbert/tags/pull-migration-20200325b:
  migration: use "" instead of (null) for tls-authz
  migration/ram: fix use after free of local_err
  migration/colo: fix use after free of local_err
  vl.c: fix migration failure for 3.1 and older machine types
  tools/virtiofsd/passthrough_ll: Fix double close()
  hmp/vnc: Fix info vnc list leak
  tests/migration: Reduce autoconverge initial bandwidth
  xbzrle: update xbzrle doc
  hmp-cmd: fix a missing_break warning

Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
Peter Maydell 2020-03-26 09:28:11 +00:00
commit 01e38186ec
8 changed files with 23 additions and 11 deletions

View File

@ -92,6 +92,11 @@ Usage
power of 2. The cache default value is 64MBytes. (on source only) power of 2. The cache default value is 64MBytes. (on source only)
{qemu} migrate_set_cache_size 256m {qemu} migrate_set_cache_size 256m
Commit 73af8dd8d7 "migration: Make xbzrle_cache_size a migration parameter"
(v2.11.0) deprecated migrate-set-cache-size, therefore, the new parameter
is recommended.
{qemu} migrate_set_parameter xbzrle-cache-size 256m
4. Start outgoing migration 4. Start outgoing migration
{qemu} migrate -d tcp:destination.host:4444 {qemu} migrate -d tcp:destination.host:4444
{qemu} info migrate {qemu} info migrate
@ -108,7 +113,7 @@ power of 2. The cache default value is 64MBytes. (on source only)
xbzrle transferred: I kbytes xbzrle transferred: I kbytes
xbzrle pages: J pages xbzrle pages: J pages
xbzrle cache miss: K xbzrle cache miss: K
xbzrle overflow : L xbzrle overflow: L
xbzrle cache-miss: the number of cache misses to date - high cache-miss rate xbzrle cache-miss: the number of cache misses to date - high cache-miss rate
indicates that the cache size is set too low. indicates that the cache size is set too low.

View File

@ -93,6 +93,7 @@ static void secondary_vm_do_failover(void)
replication_stop_all(true, &local_err); replication_stop_all(true, &local_err);
if (local_err) { if (local_err) {
error_report_err(local_err); error_report_err(local_err);
local_err = NULL;
} }
/* Notify all filters of all NIC to do checkpoint */ /* Notify all filters of all NIC to do checkpoint */

View File

@ -790,7 +790,8 @@ MigrationParameters *qmp_query_migrate_parameters(Error **errp)
params->has_tls_hostname = true; params->has_tls_hostname = true;
params->tls_hostname = g_strdup(s->parameters.tls_hostname); params->tls_hostname = g_strdup(s->parameters.tls_hostname);
params->has_tls_authz = true; params->has_tls_authz = true;
params->tls_authz = g_strdup(s->parameters.tls_authz); params->tls_authz = g_strdup(s->parameters.tls_authz ?
s->parameters.tls_authz : "");
params->has_max_bandwidth = true; params->has_max_bandwidth = true;
params->max_bandwidth = s->parameters.max_bandwidth; params->max_bandwidth = s->parameters.max_bandwidth;
params->has_downtime_limit = true; params->has_downtime_limit = true;
@ -1243,7 +1244,7 @@ static bool migrate_params_check(MigrationParameters *params, Error **errp)
error_setg(errp, QERR_INVALID_PARAMETER_VALUE, error_setg(errp, QERR_INVALID_PARAMETER_VALUE,
"xbzrle_cache_size", "xbzrle_cache_size",
"is invalid, it should be bigger than target page size" "is invalid, it should be bigger than target page size"
" and a power of two"); " and a power of 2");
return false; return false;
} }

View File

@ -980,6 +980,7 @@ static void migration_bitmap_sync_precopy(RAMState *rs)
*/ */
if (precopy_notify(PRECOPY_NOTIFY_BEFORE_BITMAP_SYNC, &local_err)) { if (precopy_notify(PRECOPY_NOTIFY_BEFORE_BITMAP_SYNC, &local_err)) {
error_report_err(local_err); error_report_err(local_err);
local_err = NULL;
} }
migration_bitmap_sync(rs); migration_bitmap_sync(rs);

View File

@ -303,7 +303,7 @@ void hmp_info_migrate(Monitor *mon, const QDict *qdict)
info->xbzrle_cache->cache_miss); info->xbzrle_cache->cache_miss);
monitor_printf(mon, "xbzrle cache miss rate: %0.2f\n", monitor_printf(mon, "xbzrle cache miss rate: %0.2f\n",
info->xbzrle_cache->cache_miss_rate); info->xbzrle_cache->cache_miss_rate);
monitor_printf(mon, "xbzrle overflow : %" PRIu64 "\n", monitor_printf(mon, "xbzrle overflow: %" PRIu64 "\n",
info->xbzrle_cache->overflow); info->xbzrle_cache->overflow);
} }
@ -459,9 +459,9 @@ void hmp_info_migrate_parameters(Monitor *mon, const QDict *qdict)
monitor_printf(mon, "%s: %" PRIu64 "\n", monitor_printf(mon, "%s: %" PRIu64 "\n",
MigrationParameter_str(MIGRATION_PARAMETER_MAX_POSTCOPY_BANDWIDTH), MigrationParameter_str(MIGRATION_PARAMETER_MAX_POSTCOPY_BANDWIDTH),
params->max_postcopy_bandwidth); params->max_postcopy_bandwidth);
monitor_printf(mon, " %s: '%s'\n", monitor_printf(mon, "%s: '%s'\n",
MigrationParameter_str(MIGRATION_PARAMETER_TLS_AUTHZ), MigrationParameter_str(MIGRATION_PARAMETER_TLS_AUTHZ),
params->has_tls_authz ? params->tls_authz : ""); params->tls_authz);
} }
qapi_free_MigrationParameters(params); qapi_free_MigrationParameters(params);
@ -527,10 +527,11 @@ static void hmp_info_vnc_servers(Monitor *mon, VncServerInfo2List *server)
void hmp_info_vnc(Monitor *mon, const QDict *qdict) void hmp_info_vnc(Monitor *mon, const QDict *qdict)
{ {
VncInfo2List *info2l; VncInfo2List *info2l, *info2l_head;
Error *err = NULL; Error *err = NULL;
info2l = qmp_query_vnc_servers(&err); info2l = qmp_query_vnc_servers(&err);
info2l_head = info2l;
if (err) { if (err) {
hmp_handle_error(mon, err); hmp_handle_error(mon, err);
return; return;
@ -559,7 +560,7 @@ void hmp_info_vnc(Monitor *mon, const QDict *qdict)
info2l = info2l->next; info2l = info2l->next;
} }
qapi_free_VncInfo2List(info2l); qapi_free_VncInfo2List(info2l_head);
} }
#endif #endif
@ -1261,6 +1262,7 @@ void hmp_migrate_set_parameter(Monitor *mon, const QDict *qdict)
case MIGRATION_PARAMETER_THROTTLE_TRIGGER_THRESHOLD: case MIGRATION_PARAMETER_THROTTLE_TRIGGER_THRESHOLD:
p->has_throttle_trigger_threshold = true; p->has_throttle_trigger_threshold = true;
visit_type_int(v, param, &p->throttle_trigger_threshold, &err); visit_type_int(v, param, &p->throttle_trigger_threshold, &err);
break;
case MIGRATION_PARAMETER_CPU_THROTTLE_INITIAL: case MIGRATION_PARAMETER_CPU_THROTTLE_INITIAL:
p->has_cpu_throttle_initial = true; p->has_cpu_throttle_initial = true;
visit_type_int(v, param, &p->cpu_throttle_initial, &err); visit_type_int(v, param, &p->cpu_throttle_initial, &err);

View File

@ -2801,6 +2801,9 @@ static void create_default_memdev(MachineState *ms, const char *path)
object_property_set_int(obj, ms->ram_size, "size", &error_fatal); object_property_set_int(obj, ms->ram_size, "size", &error_fatal);
object_property_add_child(object_get_objects_root(), mc->default_ram_id, object_property_add_child(object_get_objects_root(), mc->default_ram_id,
obj, &error_fatal); obj, &error_fatal);
/* Ensure backend's memory region name is equal to mc->default_ram_id */
object_property_set_bool(obj, false, "x-use-canonical-path-for-ramblock-id",
&error_fatal);
user_creatable_complete(USER_CREATABLE(obj), &error_fatal); user_creatable_complete(USER_CREATABLE(obj), &error_fatal);
object_unref(obj); object_unref(obj);
object_property_set_str(OBJECT(ms), mc->default_ram_id, "memory-backend", object_property_set_str(OBJECT(ms), mc->default_ram_id, "memory-backend",

View File

@ -1211,7 +1211,7 @@ static void test_migrate_auto_converge(void)
* without throttling. * without throttling.
*/ */
migrate_set_parameter_int(from, "downtime-limit", 1); migrate_set_parameter_int(from, "downtime-limit", 1);
migrate_set_parameter_int(from, "max-bandwidth", 100000000); /* ~100Mb/s */ migrate_set_parameter_int(from, "max-bandwidth", 1000000); /* ~1Mb/s */
/* To check remaining size after precopy */ /* To check remaining size after precopy */
migrate_set_capability(from, "pause-before-switchover", true); migrate_set_capability(from, "pause-before-switchover", true);

View File

@ -1520,8 +1520,7 @@ out_err:
if (d) { if (d) {
if (d->dp) { if (d->dp) {
closedir(d->dp); closedir(d->dp);
} } else if (fd != -1) {
if (fd != -1) {
close(fd); close(fd);
} }
free(d); free(d);