[libvirt] PATCH: 5/7: Remove paths from virDomainObjPtr

Jim Meyering jim at meyering.net
Wed Aug 6 15:04:28 UTC 2008


"Daniel P. Berrange" <berrange at redhat.com> wrote:
...

ACK, modulo two questions:

> diff -r a204a9425afd src/domain_conf.c
>  int virDomainDeleteConfig(virConnectPtr conn,
> -                           virDomainObjPtr dom)
> +                          const char *configDir,
> +                          const char *autostartDir,
> +                          virDomainObjPtr dom)
>  {
> -    if (!dom->configFile || !dom->autostartLink) {
> -        virDomainReportError(conn, VIR_ERR_INTERNAL_ERROR,
> -                              _("no config file for %s"), dom->def->name);
> -        return -1;
> +    char *configFile = NULL, *autostartLink = NULL;
> +    int ret = -1;
> +
> +    if (asprintf(&configFile, "%s/%s",

Shouldn't that be "%s/%s.xml", as used in at least two
other places where configFile is defined?
This deserves a tiny helper function, so that the
dom->configFile mapping happens in just one place.

> +                 configDir, dom->def->name) < 0) {
> +        configFile = NULL;
...

>  #endif /* ! PROXY */
...
> diff -r a204a9425afd src/qemu_driver.c
...
>  static int qemudDomainSetAutostart(virDomainPtr dom,
> -                            int autostart) {
> +                                   int autostart) {
>      struct qemud_driver *driver = (struct qemud_driver *)dom->conn->privateData;
>      virDomainObjPtr vm = virDomainFindByUUID(driver->domains, dom->uuid);
> +    char *configFile = NULL, *autostartLink = NULL;
> +    int ret = -1;
>
>      if (!vm) {
>          qemudReportError(dom->conn, dom, NULL, VIR_ERR_INVALID_DOMAIN,
>                           "%s", _("no domain with matching uuid"));
> +        return -1;
> +    }
> +
> +    if (!vm->persistent) {
> +        qemudReportError(dom->conn, dom, NULL, VIR_ERR_INTERNAL_ERROR,
> +                         "%s", _("cannot set autostart for transient domain"));
>          return -1;
>      }
>
> @@ -3039,6 +3053,20 @@
>      if (vm->autostart == autostart)
>          return 0;
>
> +    if (asprintf(&configFile, "%s/%s.xml",
> +                 driver->configDir, vm->def->name) < 0) {
> +        configFile = NULL;
> +        qemudReportError(dom->conn, dom, NULL, VIR_ERR_NO_MEMORY, NULL);
> +        goto cleanup;
> +    }
> +
> +    if (asprintf(&autostartLink, "%s/%s.xml",
> +                 driver->autostartDir, vm->def->name) < 0) {

Your 6/7 patch has this:

    if (asprintf(&autostartLink, "%s/%s",

Is the different format deliberate?
Maybe a helper function for the dom->autostartLink name, too?

> +        autostartLink = NULL;
> +        qemudReportError(dom->conn, dom, NULL, VIR_ERR_NO_MEMORY, NULL);
> +        goto cleanup;
> +    }
> +
...
> +cleanup:
> +    VIR_FREE(configFile);
> +    VIR_FREE(autostartLink);
> +
> +    return ret;
>  }
>
>  /* This uses the 'info blockstats' monitor command which was




More information about the libvir-list mailing list