On 9/10/25 18:03, Daniel P. Berrangé wrote:
--- a/storage-daemon/qemu-storage-daemon.c
+++ b/storage-daemon/qemu-storage-daemon.c
@@ -47,6 +47,7 @@
  #include "qemu/cutils.h"
  #include "qemu/config-file.h"
  #include "qemu/error-report.h"
+#include "qemu/message.h"
  #include "qemu/help_option.h"
  #include "qemu/job.h"
  #include "qemu/log.h"
@@ -65,6 +66,10 @@ static const char *pid_file;
  static char *pid_file_realpath;
  static volatile bool exit_requested = false;
+#define QMESSAGE_FORMAT_DEFAULT \
+    (QMESSAGE_FORMAT_PROGRAM_NAME | \
+     QMESSAGE_FORMAT_THREAD_INFO)
+
  void qemu_system_killed(int signal, pid_t pid)
  {
      exit_requested = true;
@@ -399,6 +404,7 @@ int main(int argc, char *argv[])
  #endif
error_init(argv[0]);
+    qmessage_set_format(QMESSAGE_FORMAT_DEFAULT);
      qemu_init_exec_dir(argv[0]);
      os_setup_signal_handling();
diff --git a/system/vl.c b/system/vl.c
index 9030212c50..20b655a7bc 100644
--- a/system/vl.c
+++ b/system/vl.c
@@ -145,6 +145,10 @@
#define MAX_VIRTIO_CONSOLES 1 +#define QMESSAGE_FORMAT_DEFAULT \
+    (QMESSAGE_FORMAT_PROGRAM_NAME | \
+     QMESSAGE_FORMAT_THREAD_INFO)
+
  typedef struct BlockdevOptionsQueueEntry {
      BlockdevOptions *bdo;
      Location loc;
@@ -811,10 +815,9 @@ static void realtime_init(void)
      }
  }
-
  static void configure_msg(QemuOpts *opts)
  {
-    int flags = QMESSAGE_FORMAT_PROGRAM_NAME;
+    int flags = QMESSAGE_FORMAT_DEFAULT;
      if (qemu_opt_get_bool(opts, "timestamp", false)) {
          flags |= QMESSAGE_FORMAT_TIMESTAMP;
      }
@@ -2888,6 +2891,7 @@ void qemu_init(int argc, char **argv)
      module_call_init(MODULE_INIT_OPTS);
error_init(argv[0]);
+    qmessage_set_format(QMESSAGE_FORMAT_DEFAULT);

Worth a static initial value of the variable, rather than require two other 
startup calls?

This also seems like it should be a separate patch from adding THREAD_INFO to qmessage_context_print.


r~


      qemu_init_exec_dir(argv[0]);
os_setup_limits();
diff --git a/tests/qemu-iotests/041 b/tests/qemu-iotests/041
index 8452845f44..dc2666afe7 100755
--- a/tests/qemu-iotests/041
+++ b/tests/qemu-iotests/041
@@ -1102,7 +1102,7 @@ class TestRepairQuorum(iotests.QMPTestCase):
          self.vm.shutdown()
          log = iotests.filter_qtest(self.vm.get_log())
          log = re.sub(r'^Formatting.*\n', '', log)
-        log = re.sub(r'^%s: ' % os.path.basename(iotests.qemu_prog), '', log)
+        log = re.sub(r'^%s: \(\d+:\w+\): ' % 
os.path.basename(iotests.qemu_prog), '', log)
self.assertEqual(log,
                           "Can no longer replace 'img1' by 'repair0', because 
" +
diff --git a/tests/qemu-iotests/common.filter b/tests/qemu-iotests/common.filter
index 511a55b1e8..84f352d30b 100644
--- a/tests/qemu-iotests/common.filter
+++ b/tests/qemu-iotests/common.filter
@@ -81,7 +81,7 @@ _filter_qemu_io()
  # replace occurrences of QEMU_PROG with "qemu"
  _filter_qemu()
  {
-    gsed -e "s#\\(^\\|(qemu) \\)$(basename $QEMU_PROG):#\1QEMU_PROG:#" \
+    gsed -e "s#\\(^\\|(qemu) \\)$(basename $QEMU_PROG): 
([0-9]\+:[-_a-zA-Z]\+):#\1QEMU_PROG:#" \
          -e 's#^QEMU [0-9]\+\.[0-9]\+\.[0-9]\+ monitor#QEMU X.Y.Z monitor#' \
          -e $'s#\r##' # QEMU monitor uses \r\n line endings
  }
diff --git a/util/message.c b/util/message.c
index 1db9254733..814ca0316e 100644
--- a/util/message.c
+++ b/util/message.c
@@ -37,4 +37,11 @@ void qmessage_context_print(FILE *fp)
              fprintf(fp, "%s: ", pgnamestr);
          }
      }
+
+    if (message_format & QMESSAGE_FORMAT_THREAD_INFO) {
+        int thid = qemu_get_thread_id();
+        const char *thname = qemu_thread_get_name();
+
+        fprintf(fp, "(%d:%s): ", thid, thname);
+    }
  }


Reply via email to