mirror of
https://github.com/xemu-project/xemu.git
synced 2026-07-11 01:24:41 +02:00
hw/remote/vfio-user: Clean up error reporting
VFU_OBJECT_ERROR() reports the error with error_setg(&error_abort, ...) when auto-shutdown is enabled, else with error_report(). Issues: 1. The error is serious enough to warrant aborting the process when auto-shutdown is enabled, yet harmless enough to permit carrying on when it's disabled. This makes no sense to me. 2. Like assert(), &error_abort is strictly for programming errors. Is this one? Vladimir Sementsov-Ogievskiy tells me it's not. Should we exit(1) instead? 3. qapi/error.h advises "don't error_setg(&error_abort, ...), use assert()." This patch addresses just 3. It adds a FIXME comment for the other two. Cc: Jagannathan Raman <jag.raman@oracle.com> Signed-off-by: Markus Armbruster <armbru@redhat.com> Message-ID: <20250923091000.3180122-6-armbru@redhat.com> Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org> Reviewed-by: Vladimir Sementsov-Ogievskiy <vsementsov@yandex-team.ru> [FIXME comment added, commit message adjusted accordingly] Reviewed-by: Akihiko Odaki <odaki@rsg.ci.i.u-tokyo.ac.jp>
This commit is contained in:
@@ -75,12 +75,17 @@ OBJECT_DECLARE_TYPE(VfuObject, VfuObjectClass, VFU_OBJECT)
|
||||
*/
|
||||
#define VFU_OBJECT_ERROR(o, fmt, ...) \
|
||||
{ \
|
||||
error_report((fmt), ## __VA_ARGS__); \
|
||||
if (vfu_object_auto_shutdown()) { \
|
||||
error_setg(&error_abort, (fmt), ## __VA_ARGS__); \
|
||||
} else { \
|
||||
error_report((fmt), ## __VA_ARGS__); \
|
||||
/* \
|
||||
* FIXME This looks inappropriate. The error is serious \
|
||||
* enough programming error to warrant aborting the process \
|
||||
* when auto-shutdown is enabled, yet harmless enough to \
|
||||
* permit carrying on when it's disabled. Makes no sense. \
|
||||
*/ \
|
||||
abort(); \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
struct VfuObjectClass {
|
||||
ObjectClass parent_class;
|
||||
|
||||
Reference in New Issue
Block a user