[libvirt] [PATCH] openvz: Handle domain obj hash map errors

Osier Yang jyang at redhat.com
Tue Jul 10 06:42:13 UTC 2012


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




More information about the libvir-list mailing list