mirror of
https://gitlab.com/libvirt/libvirt.git
synced 2025-01-11 15:27:47 +00:00
qemu: Don't compare local and remote hostnames on migration
Libvirt tries to forbid migration onto the same host and it does that by checking if local and remote hostnames are the same and whether local and remote UUIDs are the same. Well, the latter makes sense but the former doesn't really because libvirtd can be running inside an UTS namespace and hostnames can appear the same on both sides of migration. On the other hand, host UUIDs are unique, so rely on them when trying to prevent migration onto the same host. Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1639596 Signed-off-by: Michal Privoznik <mprivozn@redhat.com> Reviewed-by: Daniel P. Berrangé <berrange@redhat.com>
This commit is contained in:
parent
2c322c5514
commit
6799b72d92
@ -1230,19 +1230,17 @@ qemuMigrationCookieXMLParse(qemuMigrationCookiePtr mig,
|
||||
}
|
||||
VIR_FREE(tmp);
|
||||
|
||||
/* Check & forbid "localhost" migration */
|
||||
if (!(mig->remoteHostname = virXPathString("string(./hostname[1])", ctxt))) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
"%s", _("missing hostname element in migration data"));
|
||||
goto error;
|
||||
}
|
||||
if (STREQ(mig->remoteHostname, mig->localHostname)) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
_("Attempt to migrate guest to the same host %s"),
|
||||
mig->remoteHostname);
|
||||
goto error;
|
||||
}
|
||||
/* Historically, this is the place where we checked whether remoteHostname
|
||||
* and localHostname are the same. But even if they were, it doesn't mean
|
||||
* the domain is migrating onto the same host. Rely on UUID which can tell
|
||||
* for sure. */
|
||||
|
||||
/* Check & forbid localhost migration */
|
||||
if (!(tmp = virXPathString("string(./hostuuid[1])", ctxt))) {
|
||||
virReportError(VIR_ERR_INTERNAL_ERROR,
|
||||
"%s", _("missing hostuuid element in migration data"));
|
||||
|
Loading…
Reference in New Issue
Block a user