[PATCH] Make virConnectOpenInternal() report error in all cases

Peter Krempa pkrempa at redhat.com
Thu Jan 6 15:16:15 UTC 2022


On Thu, Jan 06, 2022 at 20:34:26 +0530, Ani Sinha wrote:
> virConnectOpenInternal() does not report error in all failure scenarios, except
> in some specific cases. This inconsistent behavior forces the caller of this
> function report a generic error for all failure modes which then hides specific
> error scenarios. This change makes virConnectOpenInternal() report failure in
> all cases so that it can generate specific errors based on the type of failure
> encountered. The reporiting of the errors can be made more fine grained in
> subsequent changes.
> 
> Signed-off-by: Ani Sinha <ani at anisinha.ca>
> ---
>  src/libvirt.c               | 24 ++++++++++++++++--------
>  src/libxl/libxl_migration.c |  3 ---
>  src/qemu/qemu_migration.c   |  3 ---
>  3 files changed, 16 insertions(+), 14 deletions(-)
> 
> diff --git a/src/libvirt.c b/src/libvirt.c
> index 45315f484c..53ceee1359 100644
> --- a/src/libvirt.c
> +++ b/src/libvirt.c
> @@ -893,8 +893,12 @@ virConnectOpenInternal(const char *name,
>      bool embed = false;
>  
>      ret = virGetConnect();
> -    if (ret == NULL)
> +    if (ret == NULL) {
> +        virReportError(VIR_ERR_INVALID_CONN,
> +                       _("Failed to create connection object for URI %s"),
> +                       NULLSTR(name));

'virGetConnect' is reporting errors in all cases when NULL is returned.

>          return NULL;
> +    }
>  
>      if (virConfLoadConfig(&conf, "libvirt.conf") < 0)

This seems to be reporting them too.

>          goto failed;
> @@ -974,7 +978,7 @@ virConnectOpenInternal(const char *name,
>              virReportError(VIR_ERR_NO_CONNECT,
>                             _("URI '%s' does not include a driver name"),
>                             name);
> -            goto failed;
> +            goto failed_no_report;
>          }
>  
>          if (virConnectCheckURIMissingSlash(uristr,

e.g this function is also reporting errors and better than the one you
are replacing it with.

Based on at least the two counts above I think you'll need to be more
specific in your claims in the commit message and re-asses all the code
paths.




More information about the libvir-list mailing list