dcavalca / rpms / qemu

Forked from rpms/qemu a year ago
Clone

Blame 0069-virtiofsd-Add-ID-to-the-log-with-FUSE_LOG_DEBUG-leve.patch

1d442b
From: Masayoshi Mizuma <m.mizuma@jp.fujitsu.com>
1d442b
Date: Mon, 27 Jan 2020 19:01:38 +0000
1d442b
Subject: [PATCH] virtiofsd: Add ID to the log with FUSE_LOG_DEBUG level
1d442b
MIME-Version: 1.0
1d442b
Content-Type: text/plain; charset=UTF-8
1d442b
Content-Transfer-Encoding: 8bit
1d442b
1d442b
virtiofsd has some threads, so we see a lot of logs with debug option.
1d442b
It would be useful for debugging if we can identify the specific thread
1d442b
from the log.
1d442b
1d442b
Add ID, which is got by gettid(), to the log with FUSE_LOG_DEBUG level
1d442b
so that we can grep the specific thread.
1d442b
1d442b
The log is like as:
1d442b
1d442b
  ]# ./virtiofsd -d -o vhost_user_socket=/tmp/vhostqemu0 -o source=/tmp/share0 -o cache=auto
1d442b
  ...
1d442b
  [ID: 00000097]    unique: 12696, success, outsize: 120
1d442b
  [ID: 00000097] virtio_send_msg: elem 18: with 2 in desc of length 120
1d442b
  [ID: 00000003] fv_queue_thread: Got queue event on Queue 1
1d442b
  [ID: 00000003] fv_queue_thread: Queue 1 gave evalue: 1 available: in: 65552 out: 80
1d442b
  [ID: 00000003] fv_queue_thread: Waiting for Queue 1 event
1d442b
  [ID: 00000071] fv_queue_worker: elem 33: with 2 out desc of length 80 bad_in_num=0 bad_out_num=0
1d442b
  [ID: 00000071] unique: 12694, opcode: READ (15), nodeid: 2, insize: 80, pid: 2014
1d442b
  [ID: 00000071] lo_read(ino=2, size=65536, off=131072)
1d442b
1d442b
Signed-off-by: Masayoshi Mizuma <m.mizuma@jp.fujitsu.com>
1d442b
1d442b
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
1d442b
  added rework as suggested by Daniel P. Berrangé during review
1d442b
Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com>
1d442b
Signed-off-by: Dr. David Alan Gilbert <dgilbert@redhat.com>
1d442b
(cherry picked from commit 36f3846902bd41413f6c0bf797dee509028c29f4)
1d442b
---
1d442b
 tools/virtiofsd/passthrough_ll.c | 8 ++++++++
1d442b
 1 file changed, 8 insertions(+)
1d442b
1d442b
diff --git a/tools/virtiofsd/passthrough_ll.c b/tools/virtiofsd/passthrough_ll.c
1d442b
index ff6910fd73..f08324f000 100644
1d442b
--- a/tools/virtiofsd/passthrough_ll.c
1d442b
+++ b/tools/virtiofsd/passthrough_ll.c
1d442b
@@ -43,6 +43,7 @@
1d442b
 #include <cap-ng.h>
1d442b
 #include <dirent.h>
1d442b
 #include <errno.h>
1d442b
+#include <glib.h>
1d442b
 #include <inttypes.h>
1d442b
 #include <limits.h>
1d442b
 #include <pthread.h>
1d442b
@@ -2268,10 +2269,17 @@ static void setup_nofile_rlimit(void)
1d442b
 
1d442b
 static void log_func(enum fuse_log_level level, const char *fmt, va_list ap)
1d442b
 {
1d442b
+    g_autofree char *localfmt = NULL;
1d442b
+
1d442b
     if (current_log_level < level) {
1d442b
         return;
1d442b
     }
1d442b
 
1d442b
+    if (current_log_level == FUSE_LOG_DEBUG) {
1d442b
+        localfmt = g_strdup_printf("[ID: %08ld] %s", syscall(__NR_gettid), fmt);
1d442b
+        fmt = localfmt;
1d442b
+    }
1d442b
+
1d442b
     if (use_syslog) {
1d442b
         int priority = LOG_ERR;
1d442b
         switch (level) {