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 -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list