On 2012年07月10日 13:21, Guido Günther wrote:
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).
OpenVZ itself doesn't complain about duplicate UUIDs since this
parameter is only used by libvirt.
---
src/openvz/openvz_conf.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/src/openvz/openvz_conf.c b/src/openvz/openvz_conf.c
index 503c8a0..0764c2c 100644
--- a/src/openvz/openvz_conf.c
+++ b/src/openvz/openvz_conf.c
@@ -684,8 +684,11 @@ int openvzLoadDomains(struct openvz_driver *driver) {
openvzReadMemConf(dom->def, veid);
virUUIDFormat(dom->def->uuid, uuidstr);
- if (virHashAddEntry(driver->domains.objs, uuidstr, dom)< 0)
+ if (virHashAddEntry(driver->domains.objs, uuidstr, dom)< 0) {
+ openvzError(VIR_ERR_INTERNAL_ERROR,
+ _("Could not add UUID for container %d"), veid);
goto cleanup;
+ }
It's good to have a clear error for the UUID collisions, but
it's not the only reason for failure of virHashAddEntry. It
could be the memory allocation error too. So The better fix
is to check the UUID duplication explicitly with virHashLookup
before adding it to the table, (virHashAddOrUpdateEntry reports
the memory allocation error anyway, so we just need to care
about the UUID conllisions, and actually the memory error
could be overriden with this patch).
Regards,
Osier