util/qemu-error: prepend guest name to error message to identify affected VM owner
This is followup patch to the one submitted back in Oct, 19 https://lists.gnu.org/archive/html/qemu-devel/2019-10/msg02102.html My mistake here, I took my eyes of the mailing list after I got the initial thumbs up. This patch follows up on Markus comments in the above link. Purpose of this patch: We want to print guest name for errors, warnings and info messages. This was the first of two patches the second being MCE errors targeting a VM with guest name prepended. But in a large fleet we see many other errors that disable a VM or crash it. In a large fleet and centralized logging having the guest name enables identify of owner and customer. Signed-off-by: Mario Smarduch <msmarduch@digitalocean.com> Message-Id: <20200626201900.8876-1-msmarduch@digitalocean.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
3bcb5840f1
commit
2880ffb089
@ -75,5 +75,7 @@ void error_init(const char *argv0);
|
||||
const char *error_get_progname(void);
|
||||
|
||||
extern bool error_with_timestamp;
|
||||
extern bool error_with_guestname;
|
||||
extern const char *error_guest_name;
|
||||
|
||||
#endif
|
||||
|
@ -4303,16 +4303,22 @@ HXCOMM Deprecated by -accel tcg
|
||||
DEF("no-kvm", 0, QEMU_OPTION_no_kvm, "", QEMU_ARCH_I386)
|
||||
|
||||
DEF("msg", HAS_ARG, QEMU_OPTION_msg,
|
||||
"-msg timestamp[=on|off]\n"
|
||||
"-msg [timestamp[=on|off]][,guest-name=[on|off]]\n"
|
||||
" control error message format\n"
|
||||
" timestamp=on enables timestamps (default: off)\n",
|
||||
" timestamp=on enables timestamps (default: off)\n"
|
||||
" guest-name=on enables guest name prefix but only if\n"
|
||||
" -name guest option is set (default: off)\n",
|
||||
QEMU_ARCH_ALL)
|
||||
SRST
|
||||
``-msg timestamp[=on|off]``
|
||||
``-msg [timestamp[=on|off]][,guest-name[=on|off]]``
|
||||
Control error message format.
|
||||
|
||||
``timestamp=on|off``
|
||||
Prefix messages with a timestamp. Default is off.
|
||||
|
||||
``guest-name=on|off``
|
||||
Prefix messages with guest name but only if -name guest option is set
|
||||
otherwise the option is ignored. Default is off.
|
||||
ERST
|
||||
|
||||
DEF("dump-vmstate", HAS_ARG, QEMU_OPTION_dump_vmstate,
|
||||
|
@ -389,6 +389,12 @@ static QemuOptsList qemu_msg_opts = {
|
||||
.name = "timestamp",
|
||||
.type = QEMU_OPT_BOOL,
|
||||
},
|
||||
{
|
||||
.name = "guest-name",
|
||||
.type = QEMU_OPT_BOOL,
|
||||
.help = "Prepends guest name for error messages but only if "
|
||||
"-name guest is set otherwise option is ignored\n",
|
||||
},
|
||||
{ /* end of list */ }
|
||||
},
|
||||
};
|
||||
@ -1114,6 +1120,7 @@ static void realtime_init(void)
|
||||
static void configure_msg(QemuOpts *opts)
|
||||
{
|
||||
error_with_timestamp = qemu_opt_get_bool(opts, "timestamp", false);
|
||||
error_with_guestname = qemu_opt_get_bool(opts, "guest-name", false);
|
||||
}
|
||||
|
||||
|
||||
@ -3592,6 +3599,8 @@ void qemu_init(int argc, char **argv, char **envp)
|
||||
if (!opts) {
|
||||
exit(1);
|
||||
}
|
||||
/* Capture guest name if -msg guest-name is used later */
|
||||
error_guest_name = qemu_opt_get(opts, "guest");
|
||||
break;
|
||||
case QEMU_OPTION_prom_env:
|
||||
if (nb_prom_envs >= MAX_PROM_ENVS) {
|
||||
|
@ -26,6 +26,8 @@ typedef enum {
|
||||
|
||||
/* Prepend timestamp to messages */
|
||||
bool error_with_timestamp;
|
||||
bool error_with_guestname;
|
||||
const char *error_guest_name;
|
||||
|
||||
int error_printf(const char *fmt, ...)
|
||||
{
|
||||
@ -213,6 +215,11 @@ static void vreport(report_type type, const char *fmt, va_list ap)
|
||||
g_free(timestr);
|
||||
}
|
||||
|
||||
/* Only prepend guest name if -msg guest-name and -name guest=... are set */
|
||||
if (error_with_guestname && error_guest_name && !cur_mon) {
|
||||
error_printf("%s ", error_guest_name);
|
||||
}
|
||||
|
||||
print_loc();
|
||||
|
||||
switch (type) {
|
||||
|
Loading…
Reference in New Issue
Block a user