On Tue, Jul 10, 2012 at 02:42:13PM +0800, Osier Yang wrote:
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).
Agreed, you need to check for collisions before adding the entry,
otherwise you obscure other relevant error messages.
Daniel
--
|:
http://berrange.com -o-
http://www.flickr.com/photos/dberrange/ :|
|:
http://libvirt.org -o-
http://virt-manager.org :|
|:
http://autobuild.org -o-
http://search.cpan.org/~danberr/ :|
|:
http://entangle-photo.org -o-
http://live.gnome.org/gtk-vnc :|