From: Richard Henderson <richard.henderson@linaro.org>
To: qemu-devel@nongnu.org
Cc: "Alex Bennée" <alex.bennee@linaro.org>
Subject: [PULL 04/39] util/log: Pass Error pointer to qemu_set_log
Date: Wed, 20 Apr 2022 11:05:43 -0700 [thread overview]
Message-ID: <20220420180618.1183855-5-richard.henderson@linaro.org> (raw)
In-Reply-To: <20220420180618.1183855-1-richard.henderson@linaro.org>
Do not force exit within qemu_set_log; return bool and pass
an Error value back up the stack as per usual.
Reviewed-by: Alex Bennée <alex.bennee@linaro.org>
Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
Message-Id: <20220417183019.755276-5-richard.henderson@linaro.org>
---
include/qemu/log.h | 2 +-
bsd-user/main.c | 2 +-
linux-user/main.c | 2 +-
monitor/misc.c | 6 +++++-
qemu-img.c | 2 +-
qemu-io.c | 2 +-
qemu-nbd.c | 2 +-
scsi/qemu-pr-helper.c | 2 +-
softmmu/vl.c | 4 ++--
storage-daemon/qemu-storage-daemon.c | 2 +-
tests/unit/test-logging.c | 2 +-
util/log.c | 12 ++++++------
12 files changed, 22 insertions(+), 18 deletions(-)
diff --git a/include/qemu/log.h b/include/qemu/log.h
index fabfbe41da..0b892f5e90 100644
--- a/include/qemu/log.h
+++ b/include/qemu/log.h
@@ -147,7 +147,7 @@ typedef struct QEMULogItem {
extern const QEMULogItem qemu_log_items[];
-void qemu_set_log(int log_flags);
+bool qemu_set_log(int log_flags, Error **errp);
bool qemu_set_log_filename(const char *filename, Error **errp);
void qemu_set_dfilter_ranges(const char *ranges, Error **errp);
bool qemu_log_in_addr_range(uint64_t addr);
diff --git a/bsd-user/main.c b/bsd-user/main.c
index 08f43af235..0c8aa1ae90 100644
--- a/bsd-user/main.c
+++ b/bsd-user/main.c
@@ -414,7 +414,7 @@ int main(int argc, char **argv)
qemu_print_log_usage(stdout);
exit(1);
}
- qemu_set_log(mask);
+ qemu_set_log(mask, &error_fatal);
}
if (optind >= argc) {
diff --git a/linux-user/main.c b/linux-user/main.c
index 2b06350688..6aed4929ab 100644
--- a/linux-user/main.c
+++ b/linux-user/main.c
@@ -679,7 +679,7 @@ int main(int argc, char **argv, char **envp)
log_mask = last_log_mask | (enable_strace ? LOG_STRACE : 0);
if (log_mask) {
- qemu_set_log(log_mask);
+ qemu_set_log(log_mask, &error_fatal);
}
if (!trace_init_backends()) {
diff --git a/monitor/misc.c b/monitor/misc.c
index 4b68fcd346..33372b93cc 100644
--- a/monitor/misc.c
+++ b/monitor/misc.c
@@ -428,6 +428,7 @@ static void hmp_log(Monitor *mon, const QDict *qdict)
{
int mask;
const char *items = qdict_get_str(qdict, "items");
+ Error *err = NULL;
if (!strcmp(items, "none")) {
mask = 0;
@@ -438,7 +439,10 @@ static void hmp_log(Monitor *mon, const QDict *qdict)
return;
}
}
- qemu_set_log(mask);
+
+ if (!qemu_set_log(mask, &err)) {
+ error_report_err(err);
+ }
}
static void hmp_singlestep(Monitor *mon, const QDict *qdict)
diff --git a/qemu-img.c b/qemu-img.c
index 116e058675..ef3224a9d4 100644
--- a/qemu-img.c
+++ b/qemu-img.c
@@ -5443,7 +5443,7 @@ int main(int argc, char **argv)
exit(1);
}
trace_init_file();
- qemu_set_log(LOG_TRACE);
+ qemu_set_log(LOG_TRACE, &error_fatal);
/* find the command */
for (cmd = img_cmds; cmd->name != NULL; cmd++) {
diff --git a/qemu-io.c b/qemu-io.c
index eb8afc8b41..38321a27a3 100644
--- a/qemu-io.c
+++ b/qemu-io.c
@@ -634,7 +634,7 @@ int main(int argc, char **argv)
exit(1);
}
trace_init_file();
- qemu_set_log(LOG_TRACE);
+ qemu_set_log(LOG_TRACE, &error_fatal);
/* initialize commands */
qemuio_add_command(&quit_cmd);
diff --git a/qemu-nbd.c b/qemu-nbd.c
index 713e7557a9..bf9c5fedce 100644
--- a/qemu-nbd.c
+++ b/qemu-nbd.c
@@ -804,7 +804,7 @@ int main(int argc, char **argv)
exit(1);
}
trace_init_file();
- qemu_set_log(LOG_TRACE);
+ qemu_set_log(LOG_TRACE, &error_fatal);
socket_activation = check_socket_activation();
if (socket_activation == 0) {
diff --git a/scsi/qemu-pr-helper.c b/scsi/qemu-pr-helper.c
index f281daeced..1f2a84c534 100644
--- a/scsi/qemu-pr-helper.c
+++ b/scsi/qemu-pr-helper.c
@@ -1001,7 +1001,7 @@ int main(int argc, char **argv)
exit(EXIT_FAILURE);
}
trace_init_file();
- qemu_set_log(LOG_TRACE);
+ qemu_set_log(LOG_TRACE, &error_fatal);
#ifdef CONFIG_MPATH
dm_init();
diff --git a/softmmu/vl.c b/softmmu/vl.c
index 46aba6a039..fe9de2f896 100644
--- a/softmmu/vl.c
+++ b/softmmu/vl.c
@@ -2570,9 +2570,9 @@ static void qemu_process_early_options(void)
qemu_print_log_usage(stdout);
exit(1);
}
- qemu_set_log(mask);
+ qemu_set_log(mask, &error_fatal);
} else {
- qemu_set_log(0);
+ qemu_set_log(0, &error_fatal);
}
qemu_add_default_firmwarepath();
diff --git a/storage-daemon/qemu-storage-daemon.c b/storage-daemon/qemu-storage-daemon.c
index eb72407257..1398f0443d 100644
--- a/storage-daemon/qemu-storage-daemon.c
+++ b/storage-daemon/qemu-storage-daemon.c
@@ -392,7 +392,7 @@ int main(int argc, char *argv[])
if (!trace_init_backends()) {
return EXIT_FAILURE;
}
- qemu_set_log(LOG_TRACE);
+ qemu_set_log(LOG_TRACE, &error_fatal);
qemu_init_main_loop(&error_fatal);
process_options(argc, argv, false);
diff --git a/tests/unit/test-logging.c b/tests/unit/test-logging.c
index 05703a4e51..d071400ebc 100644
--- a/tests/unit/test-logging.c
+++ b/tests/unit/test-logging.c
@@ -122,7 +122,7 @@ static void test_logfile_write(gconstpointer data)
* In cases where a logging backend other than log is used,
* this is needed.
*/
- qemu_set_log(CPU_LOG_TB_OUT_ASM);
+ qemu_set_log(CPU_LOG_TB_OUT_ASM, &error_abort);
file_path = g_build_filename(dir, "qemu_test_log_write0.log", NULL);
file_path1 = g_build_filename(dir, "qemu_test_log_write1.log", NULL);
diff --git a/util/log.c b/util/log.c
index a838686a18..bab4d29ecb 100644
--- a/util/log.c
+++ b/util/log.c
@@ -73,7 +73,7 @@ static void qemu_logfile_free(QemuLogFile *logfile)
}
/* enable or disable low levels log */
-void qemu_set_log(int log_flags)
+bool qemu_set_log(int log_flags, Error **errp)
{
bool need_to_open_file = false;
QemuLogFile *logfile;
@@ -103,9 +103,9 @@ void qemu_set_log(int log_flags)
if (logfilename) {
logfile->fd = fopen(logfilename, log_append ? "a" : "w");
if (!logfile->fd) {
- g_free(logfile);
- perror(logfilename);
- _exit(1);
+ error_setg_errno(errp, errno, "Error opening logfile %s",
+ logfilename);
+ return false;
}
/* In case we are a daemon redirect stderr to logfile */
if (is_daemonized()) {
@@ -129,6 +129,7 @@ void qemu_set_log(int log_flags)
log_append = 1;
qatomic_rcu_set(&qemu_logfile, logfile);
}
+ return true;
}
/*
@@ -159,8 +160,7 @@ bool qemu_set_log_filename(const char *filename, Error **errp)
}
qemu_log_close();
- qemu_set_log(qemu_loglevel);
- return true;
+ return qemu_set_log(qemu_loglevel, errp);
}
/* Returns true if addr is in our debug filter or no filter defined
--
2.34.1
next prev parent reply other threads:[~2022-04-20 18:13 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-20 18:05 [PULL 00/39] Logging cleanup and per-thread logfiles Richard Henderson
2022-04-20 18:05 ` [PULL 01/39] util/log: Drop manual log buffering Richard Henderson
2022-04-20 18:05 ` [PULL 02/39] target/hexagon: Remove qemu_set_log in hexagon_translate_init Richard Henderson
2022-04-20 18:05 ` [PULL 03/39] util/log: Return bool from qemu_set_log_filename Richard Henderson
2022-04-20 18:05 ` Richard Henderson [this message]
2022-04-20 18:05 ` [PULL 05/39] os-posix: Use qemu_log_enabled Richard Henderson
2022-04-20 18:05 ` [PULL 06/39] util/log: Move qemu_log_lock, qemu_log_unlock out of line Richard Henderson
2022-04-20 18:05 ` [PULL 07/39] util/log: Rename qemu_log_lock to qemu_log_trylock Richard Henderson
2022-04-20 18:05 ` [PULL 08/39] hw/xen: Split out xen_pv_output_msg Richard Henderson
2022-04-20 18:05 ` [PULL 09/39] *: Use fprintf between qemu_log_trylock/unlock Richard Henderson
2022-04-20 18:05 ` [PULL 10/39] util/log: Remove qemu_log_vprintf Richard Henderson
2022-04-20 18:05 ` [PULL 11/39] tcg: Pass the locked filepointer to tcg_dump_ops Richard Henderson
2022-04-20 18:05 ` [PULL 12/39] exec/translator: Pass the locked filepointer to disas_log hook Richard Henderson
2022-04-20 18:05 ` [PULL 13/39] exec/log: Remove log_disas and log_target_disas Richard Henderson
2022-04-20 18:05 ` [PULL 14/39] accel/tcg: Use cpu_dump_state between qemu_log_trylock/unlock Richard Henderson
2022-04-20 18:05 ` [PULL 15/39] target/nios2: Remove log_cpu_state from reset Richard Henderson
2022-04-20 18:05 ` [PULL 16/39] util/log: Use qemu_log_trylock/unlock in qemu_log Richard Henderson
2022-04-20 18:05 ` [PULL 17/39] util/log: Drop return value from qemu_log Richard Henderson
2022-04-20 18:05 ` [PULL 18/39] util/log: Mark qemu_log_trylock as G_GNUC_WARN_UNUSED_RESULT Richard Henderson
2022-04-20 18:05 ` [PULL 19/39] util/log: Remove qemu_log_flush Richard Henderson
2022-04-20 18:05 ` [PULL 20/39] util/log: Drop call to setvbuf Richard Henderson
2022-04-20 18:06 ` [PULL 21/39] bsd-user: Expand log_page_dump inline Richard Henderson
2022-04-20 18:06 ` [PULL 22/39] linux-user: " Richard Henderson
2022-04-20 18:06 ` [PULL 23/39] tests/unit: Do not reference QemuLogFile directly Richard Henderson
2022-04-20 18:06 ` [PULL 24/39] include/exec/log: " Richard Henderson
2022-04-20 18:06 ` [PULL 25/39] include/qemu/log: Move entire implementation out-of-line Richard Henderson
2022-04-20 18:06 ` [PULL 26/39] sysemu/os-win32: Test for and use _lock_file/_unlock_file Richard Henderson
2022-04-20 18:06 ` [PULL 27/39] util/log: Introduce qemu_set_log_filename_flags Richard Henderson
2022-04-20 18:06 ` [PULL 28/39] bsd-user: Use qemu_set_log_filename_flags Richard Henderson
2022-04-20 18:06 ` [PULL 29/39] linux-user: " Richard Henderson
2022-04-20 18:06 ` [PULL 30/39] softmmu: " Richard Henderson
2022-04-20 18:06 ` [PULL 31/39] util/log: Remove qemu_log_close Richard Henderson
2022-04-20 18:06 ` [PULL 32/39] util/log: Rename logfilename to global_filename Richard Henderson
2022-04-20 18:06 ` [PULL 33/39] util/log: Rename qemu_logfile to global_file Richard Henderson
2022-04-20 18:06 ` [PULL 34/39] util/log: Rename qemu_logfile_mutex to global_mutex Richard Henderson
2022-04-20 18:06 ` [PULL 35/39] util/log: Hoist the eval of is_daemonized in qemu_set_log_internal Richard Henderson
2022-04-20 18:06 ` [PULL 36/39] util/log: Combine two logfile closes Richard Henderson
2022-04-20 18:06 ` [PULL 37/39] util/log: Rename QemuLogFile to RCUCloseFILE Richard Henderson
2022-04-20 18:06 ` [PULL 38/39] util/log: Limit RCUCloseFILE to file closing Richard Henderson
2022-04-20 18:06 ` [PULL 39/39] util/log: Support per-thread log files Richard Henderson
2022-04-20 23:42 ` [PULL 00/39] Logging cleanup and per-thread logfiles Richard Henderson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20220420180618.1183855-5-richard.henderson@linaro.org \
--to=richard.henderson@linaro.org \
--cc=alex.bennee@linaro.org \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).