qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] error: Fix error_report_err(), warn_report_err(


From: Vladimir Sementsov-Ogievskiy
Subject: Re: [Qemu-devel] [PATCH] error: Fix error_report_err(), warn_report_err() hint printing
Date: Wed, 17 Apr 2019 06:31:23 +0000

16.04.2019 18:38, Markus Armbruster wrote:
> Before the from qerror_report() to error_setg(), hints looked like
> this:
> 
>      qerror_report(QERR_MACRO, ... arguments ...);
>      error_printf_unless_qmp(... hint ...);
> 
> error_printf_unless_qmp() made perfect sense: it printed exactly when
> qerror_report() did.
> 
> After the conversion to error_setg():
> 
>      error_setg(errp, QERR_MACRO, ... arguments ...);
>      error_printf_unless_qmp(... hint ...);
> 
> The "unless QMP part" still made some sense; in QMP context, the
> caller generally uses the error as QMP response instead of printing
> it.
> 
> However, everything else is wrong.  If the caller handles the error,
> the hint gets printed anyway (unless QMP).  If the caller reports the
> error, the hint gets printed *before* the report (unless QMP) or not
> at all (if QMP).
> 
> Commit 50b7b000c91 fixed this by making hints a member of Error.  It
> kept printing hints with error_printf_unless_qmp():
> 
>       void error_report_err(Error *err)
>       {
>        error_report("%s", error_get_pretty(err));
>      +    if (err->hint) {
>      +        error_printf_unless_qmp("%s\n", err->hint->str);
>      +    }
>        error_free(err);
>       }
> 
> This is wrong.  We should (and now can) print the hint exactly when we
> print the error.
> 
> The mistake has since been copied to warn_report_err().
> 
> Fix both to use error_printf().
> 
> Reported-by: Vladimir Sementsov-Ogievskiy <address@hidden>
> Cc: Eric Blake <address@hidden>
> Signed-off-by: Markus Armbruster <address@hidden>
> ---
>   util/error.c | 4 ++--
>   1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/util/error.c b/util/error.c
> index 934a78e1b1..712b4d4b5d 100644
> --- a/util/error.c
> +++ b/util/error.c
> @@ -223,7 +223,7 @@ void error_report_err(Error *err)
>   {
>       error_report("%s", error_get_pretty(err));
>       if (err->hint) {
> -        error_printf_unless_qmp("%s", err->hint->str);
> +        error_printf("%s", err->hint->str);
>       }
>       error_free(err);
>   }
> @@ -232,7 +232,7 @@ void warn_report_err(Error *err)
>   {
>       warn_report("%s", error_get_pretty(err));
>       if (err->hint) {
> -        error_printf_unless_qmp("%s", err->hint->str);
> +        error_printf("%s", err->hint->str);
>       }
>       error_free(err);
>   }
> 


Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>


-- 
Best regards,
Vladimir

reply via email to

[Prev in Thread] Current Thread [Next in Thread]