diff --git a/src/libvirt.c b/src/libvirt.c index 6d659652e6..33cf7cbeb6 100644 --- a/src/libvirt.c +++ b/src/libvirt.c @@ -4620,6 +4620,7 @@ virDomainMigrateVersion2 (virDomainPtr domain, int cookielen = 0, ret; virDomainInfo info; virErrorPtr orig_err = NULL; + unsigned int getxml_flags = 0; int cancelled; VIR_DOMAIN_DEBUG(domain, "dconn=%p, flags=%lx, dname=%s, uri=%s, bandwidth=%lu", @@ -4646,9 +4647,15 @@ virDomainMigrateVersion2 (virDomainPtr domain, virDispatchError(domain->conn); return NULL; } - dom_xml = domain->conn->driver->domainGetXMLDesc(domain, - VIR_DOMAIN_XML_SECURE | - VIR_DOMAIN_XML_UPDATE_CPU); + + if (VIR_DRV_SUPPORTS_FEATURE(domain->conn->driver, domain->conn, + VIR_DRV_FEATURE_XML_MIGRATABLE)) { + getxml_flags |= VIR_DOMAIN_XML_MIGRATABLE; + } else { + getxml_flags |= VIR_DOMAIN_XML_SECURE | VIR_DOMAIN_XML_UPDATE_CPU; + } + + dom_xml = domain->conn->driver->domainGetXMLDesc(domain, getxml_flags); if (!dom_xml) return NULL; diff --git a/src/libvirt_internal.h b/src/libvirt_internal.h index 23e71535d0..71483e4695 100644 --- a/src/libvirt_internal.h +++ b/src/libvirt_internal.h @@ -95,6 +95,11 @@ enum { * messages). */ VIR_DRV_FEATURE_PROGRAM_KEEPALIVE = 10, + + /* + * Support for VIR_DOMAIN_XML_MIGRATABLE flag in domainGetXMLDesc + */ + VIR_DRV_FEATURE_XML_MIGRATABLE = 11, }; diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c index feda4d9a21..2f83626127 100644 --- a/src/qemu/qemu_driver.c +++ b/src/qemu/qemu_driver.c @@ -1130,6 +1130,7 @@ qemudSupportsFeature (virConnectPtr conn ATTRIBUTE_UNUSED, int feature) case VIR_DRV_FEATURE_MIGRATE_CHANGE_PROTECTION: case VIR_DRV_FEATURE_FD_PASSING: case VIR_DRV_FEATURE_TYPED_PARAM_STRING: + case VIR_DRV_FEATURE_XML_MIGRATABLE: return 1; default: return 0;