[libvirt] [PATCH] Check for duplicated UUID in XM Xen defines
Daniel Veillard
veillard at redhat.com
Tue Nov 17 11:16:11 UTC 2009
This fixes https://bugzilla.redhat.com/show_bug.cgi?id=504262
where the xen drivers happily allows to define domains with conflicting
UUID. This is similar to the virDomainObjIsDuplicate check done in other
drivers but the internal structures are different so this need to be
done in a special way
Author: Daniel Veillard <veillard at redhat.com>
Date: Tue Nov 17 12:06:46 2009 +0100
504262 Check for duplicated UUID in XM Xen defines
* src/xen/xm_internal.c: the XM driver was not checking for previously
defined UUID on new defines. Similar to virDomainObjIsDuplicate()
behaviour.
diff --git a/src/xen/xm_internal.c b/src/xen/xm_internal.c
index f833ce7..47bcc11 100644
--- a/src/xen/xm_internal.c
+++ b/src/xen/xm_internal.c
@@ -2623,6 +2623,26 @@ virDomainPtr xenXMDomainDefineXML(virConnectPtr conn, const char *xml) {
return (NULL);
}
+ /*
+ * check that if there is another domain defined with the same uuid
+ * it has the same name
+ */
+ if ((entry = virHashSearch(priv->configCache, xenXMDomainSearchForUUID,
+ (const void *)&(def->uuid))) != NULL) {
+ if ((entry->def != NULL) && (entry->def->name != NULL) &&
+ (STRNEQ(def->name, entry->def->name))) {
+ char uuidstr[VIR_UUID_STRING_BUFLEN];
+
+ virUUIDFormat(entry->def->uuid, uuidstr);
+ xenXMError(conn, VIR_ERR_OPERATION_FAILED,
+ _("domain '%s' is already defined with uuid %s"),
+ entry->def->name, uuidstr);
+ entry = NULL;
+ goto error;
+ }
+ entry = NULL;
+ }
+
if (virHashLookup(priv->nameConfigMap, def->name)) {
/* domain exists, we will overwrite it */
--
Daniel Veillard | libxml Gnome XML XSLT toolkit http://xmlsoft.org/
daniel at veillard.com | Rpmfind RPM search engine http://rpmfind.net/
http://veillard.com/ | virtualization library http://libvirt.org/
More information about the libvir-list
mailing list