[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL for-4.1 03/36] error: Fix error_report_err(), warn_re
From: |
Markus Armbruster |
Subject: |
[Qemu-devel] [PULL for-4.1 03/36] error: Fix error_report_err(), warn_report_err() hint printing |
Date: |
Thu, 18 Apr 2019 22:51:02 +0200 |
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() in commit
e43ead1d0b9.
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>
Message-Id: <address@hidden>
Reviewed-by: Eric Blake <address@hidden>
Reviewed-by: Vladimir Sementsov-Ogievskiy <address@hidden>
[Commit message tweaked]
---
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);
}
--
2.17.2
- [Qemu-devel] [PULL for-4.1 00/36] Error reporting & monitor patches for 2019-04-18, Markus Armbruster, 2019/04/18
- [Qemu-devel] [PULL for-4.1 04/36] util/error: do not free error on error_abort, Markus Armbruster, 2019/04/18
- [Qemu-devel] [PULL for-4.1 02/36] log: Make glib logging go through QEMU, Markus Armbruster, 2019/04/18
- [Qemu-devel] [PULL for-4.1 01/36] qemu-io: Use error_[gs]et_progname(), Markus Armbruster, 2019/04/18
- [Qemu-devel] [PULL for-4.1 13/36] vl: Make -machine $TYPE, help and -accel help print to stdout, Markus Armbruster, 2019/04/18
- [Qemu-devel] [PULL for-4.1 03/36] error: Fix error_report_err(), warn_report_err() hint printing,
Markus Armbruster <=
- [Qemu-devel] [PULL for-4.1 08/36] mips/boston: Report errors with error_report(), not error_printf(), Markus Armbruster, 2019/04/18
- [Qemu-devel] [PULL for-4.1 12/36] s390x/kvm: Report warnings with warn_report(), not error_printf(), Markus Armbruster, 2019/04/18
- [Qemu-devel] [PULL for-4.1 07/36] loader-fit: Wean off error_printf(), Markus Armbruster, 2019/04/18
- [Qemu-devel] [PULL for-4.1 36/36] include: Move fprintf_function to disas/, Markus Armbruster, 2019/04/18
- [Qemu-devel] [PULL for-4.1 14/36] monitor error: Make printf()-like functions return a value, Markus Armbruster, 2019/04/18
- [Qemu-devel] [PULL for-4.1 22/36] tcg: Simplify how dump_opcount_info() prints, Markus Armbruster, 2019/04/18
- [Qemu-devel] [PULL for-4.1 32/36] qemu-print: New qemu_fprintf(), qemu_vfprintf(), Markus Armbruster, 2019/04/18
- [Qemu-devel] [PULL for-4.1 11/36] vfio: Report warnings with warn_report(), not error_printf(), Markus Armbruster, 2019/04/18
- [Qemu-devel] [PULL for-4.1 20/36] include: Include fprintf-fn.h only where needed, Markus Armbruster, 2019/04/18
- [Qemu-devel] [PULL for-4.1 19/36] monitor: Simplify how -device/device_add print help, Markus Armbruster, 2019/04/18