From f7ebe9d012f34119bc9cf51196ebd7ad14cdaf45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Guido=20G=C3=BCnther?= Date: Mon, 9 Jul 2012 12:11:17 +0200 Subject: [PATCH] openvz: Handle domain obj hash map errors This makes the driver fail with a clear error message in case of UUID collisions (for example if somebody copied a container configuration without updating the UUID) and also raises an error on other hash map failures. OpenVZ itself doesn't complain about duplicate UUIDs since this parameter is only used by libvirt. (cherry picked from commit 31351c316fee0487dcbc5ef6b630d75be6b212e5) --- src/openvz/openvz_conf.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/openvz/openvz_conf.c b/src/openvz/openvz_conf.c index 790440628c..da150e4cde 100644 --- a/src/openvz/openvz_conf.c +++ b/src/openvz/openvz_conf.c @@ -537,8 +537,18 @@ int openvzLoadDomains(struct openvz_driver *driver) { openvzReadFSConf(dom->def, veid); virUUIDFormat(dom->def->uuid, uuidstr); - if (virHashAddEntry(driver->domains.objs, uuidstr, dom) < 0) + if (virHashLookup(driver->domains.objs, uuidstr)) { + openvzError(VIR_ERR_INTERNAL_ERROR, + _("Duplicate container UUID %s detected for %d"), + uuidstr, + veid); goto cleanup; + } + if (virHashAddEntry(driver->domains.objs, uuidstr, dom) < 0) { + openvzError(VIR_ERR_INTERNAL_ERROR, + _("Could not add UUID for container %d"), veid); + goto cleanup; + } virDomainObjUnlock(dom); dom = NULL;