[PATCH v2 3/5] qemu_passt: Make passt report errors to stderr whenever possible

Jonathon Jongsma jjongsma at redhat.com
Thu Feb 16 15:42:51 UTC 2023


On 2/16/23 7:32 AM, Michal Privoznik wrote:
> Passt has '--stderr' argument which makes it report error onto
> stderr rather to system log. Unfortunately, it's currently
> impossible to use both '--log-file' and '--stderr', so pass the
> latter only if the former isn't passed. Then, use the stderr to
> produce more user friendly error message on failed start.
> 
> Signed-off-by: Michal Privoznik <mprivozn at redhat.com>
> ---
>   src/qemu/qemu_passt.c | 22 +++++++++++++++++++---
>   1 file changed, 19 insertions(+), 3 deletions(-)
> 
> diff --git a/src/qemu/qemu_passt.c b/src/qemu/qemu_passt.c
> index c082c149cd..881205449b 100644
> --- a/src/qemu/qemu_passt.c
> +++ b/src/qemu/qemu_passt.c
> @@ -171,8 +171,13 @@ qemuPasstStart(virDomainObj *vm,
>       if (net->sourceDev)
>           virCommandAddArgList(cmd, "--interface", net->sourceDev, NULL);
>   
> -    if (net->backend.logFile)
> +    if (net->backend.logFile) {
>           virCommandAddArgList(cmd, "--log-file", net->backend.logFile, NULL);
> +    } else {
> +        /* By default, passt logs into system logger. But we are interested
> +         * into errors too. Make it print errors onto stderr. */

s/into/in the/ ?

> +        virCommandAddArg(cmd, "--stderr");
> +    }
>   
>       /* Add IP address info */
>       for (i = 0; i < net->guestIP.nips; i++) {
> @@ -265,8 +270,19 @@ qemuPasstStart(virDomainObj *vm,
>           goto error;
>   
>       if (cmdret < 0 || exitstatus != 0) {
> -        virReportError(VIR_ERR_INTERNAL_ERROR,
> -                       _("Could not start 'passt': %s"), NULLSTR(errbuf));
> +        if (STRNEQ_NULLABLE(errbuf, "")) {
> +            virReportError(VIR_ERR_INTERNAL_ERROR,
> +                           _("Could not start 'passt': %s"), errbuf);
> +        } else if (net->backend.logFile) {
> +            virReportError(VIR_ERR_INTERNAL_ERROR,
> +                           _("Could not start 'passt': look into %s for error"),
> +                           net->backend.logFile);
> +        } else {
> +            virReportError(VIR_ERR_INTERNAL_ERROR,
> +                           _("Could not start 'passt': exit status = '%d'"),
> +                           exitstatus);
> +        }
> +
>           goto error;
>       }
>   



More information about the libvir-list mailing list