[libvirt] [PATCH] qemu: Report better error message when renaming to existing domain name

Erik Skultety eskultet at redhat.com
Wed Aug 19 08:08:38 UTC 2015



On 18/08/15 21:05, Martin Kletzander wrote:
> Signed-off-by: Martin Kletzander <mkletzan at redhat.com>
> ---
>  src/qemu/qemu_driver.c | 16 ++++++++++++++++
>  1 file changed, 16 insertions(+)
> 
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 99a3817ff5ab..16061a51d4a7 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -19892,6 +19892,7 @@ static int qemuDomainRename(virDomainPtr dom,
>      virQEMUDriverPtr driver = dom->conn->privateData;
>      virQEMUDriverConfigPtr cfg = NULL;
>      virDomainObjPtr vm = NULL;
> +    virDomainObjPtr tmp_dom = NULL;
>      virObjectEventPtr event_new = NULL;
>      virObjectEventPtr event_old = NULL;
>      int ret = -1;
> @@ -19946,6 +19947,21 @@ static int qemuDomainRename(virDomainPtr dom,
>          goto endjob;
>      }
> 
> +    /*
> +     * This is a rather racy check, but still better than reporting
> +     * internal error.  And since new_name != name here, there's no
> +     * deadlock imminent.
> +     */
> +    tmp_dom = virDomainObjListFindByName(driver->domains, new_name);
> +    if (tmp_dom) {
> +        virObjectUnlock(tmp_dom);
> +        virObjectUnref(tmp_dom);
> +        virReportError(VIR_ERR_OPERATION_INVALID,
> +                       _("domain with name '%s' already exists"),
> +                       new_name);
> +        goto endjob;
> +    }
> +
>      if (VIR_STRDUP(new_dom_name, new_name) < 0)
>          goto endjob;
> 
ACK, definitely tells more than "Duplicate key" error.

Erik




More information about the libvir-list mailing list