[PATCH nbdkit] nbd: Hide some state machine debugging behind a debug flag
When running virt-p2v which uses this plugin, the log file is consumed by messages about state machine transitions and so on. In a log file that was shared with me, out of the 135,023 lines in total, 94,653 (70%) were: nbdkit: debug: polling, dir=1 and 18,676 (14%) were: nbdkit: debug: cookie X completed state machine, status 0 This commit changes the logging so these state machine transitions are only printed when you use the debug flag “-D nbd.verbose=1”. I didn't document this flag because it's likely only of use to developers who are reading the code already. There are some debug messages along error paths which are (a) generally useful and (b) did not appear in the log file, so I left those alone. Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2083498 Reported-by: Ming Xie --- plugins/nbd/nbd.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/plugins/nbd/nbd.c b/plugins/nbd/nbd.c index 45bf05e9..d0d6544b 100644 --- a/plugins/nbd/nbd.c +++ b/plugins/nbd/nbd.c @@ -66,6 +66,9 @@ #define USE_VSOCK 1 #endif +/* Use '-D nbd.verbose=1' for verbose messages about the state machine. */ +NBDKIT_DLL_PUBLIC int nbd_debug_verbose = 0; + /* The per-transaction details */ struct transaction { int64_t cookie; @@ -421,7 +424,8 @@ nbdplug_reader (void *handle) { struct handle *h = handle; - nbdkit_debug ("nbd: started reader thread"); + if (nbd_debug_verbose) + nbdkit_debug ("nbd: started reader thread"); while (!nbd_aio_is_dead (h->nbd) && !nbd_aio_is_closed (h->nbd)) { int r; @@ -433,7 +437,8 @@ nbdplug_reader (void *handle) unsigned dir; dir = nbd_aio_get_direction (h->nbd); - nbdkit_debug ("polling, dir=%d", dir); + if (nbd_debug_verbose) + nbdkit_debug ("polling, dir=%d", dir); if (dir & LIBNBD_AIO_DIRECTION_READ) fds[0].events |= POLLIN; if (dir & LIBNBD_AIO_DIRECTION_WRITE) @@ -466,8 +471,11 @@ nbdplug_reader (void *handle) } } - nbdkit_debug ("state machine changed to %s", nbd_connection_state (h->nbd)); - nbdkit_debug ("exiting reader thread"); + if (nbd_debug_verbose) { + nbdkit_debug ("state machine changed to %s", + nbd_connection_state (h->nbd)); + nbdkit_debug ("exiting reader thread"); + } return NULL; } @@ -481,8 +489,9 @@ nbdplug_notify (void *opaque, int *error) * updated by nbdplug_register, but it's only an informational * message. */ - nbdkit_debug ("cookie %" PRId64 " completed state machine, status %d", - trans->cookie, *error); + if (nbd_debug_verbose) + nbdkit_debug ("cookie %" PRId64 " completed state machine, status %d", + trans->cookie, *error); trans->err = *error; if (sem_post (&trans->sem)) { nbdkit_error ("failed to post semaphore: %m"); @@ -514,7 +523,8 @@ nbdplug_register (struct handle *h, struct transaction *trans, int64_t cookie) return; } - nbdkit_debug ("cookie %" PRId64 " started by state machine", cookie); + if (nbd_debug_verbose) + nbdkit_debug ("cookie %" PRId64 " started by state machine", cookie); trans->cookie = cookie; if (write (h->fds[1], &c, 1) == -1 && errno != EAGAIN) -- 2.35.1
On 05/10/22 11:43, Richard W.M. Jones wrote:
When running virt-p2v which uses this plugin, the log file is consumed by messages about state machine transitions and so on. In a log file that was shared with me, out of the 135,023 lines in total, 94,653 (70%) were:
nbdkit: debug: polling, dir=1
and 18,676 (14%) were:
nbdkit: debug: cookie X completed state machine, status 0
This commit changes the logging so these state machine transitions are only printed when you use the debug flag “-D nbd.verbose=1”. I didn't document this flag because it's likely only of use to developers who are reading the code already.
There are some debug messages along error paths which are (a) generally useful and (b) did not appear in the log file, so I left those alone.
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2083498 Reported-by: Ming Xie --- plugins/nbd/nbd.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-)
diff --git a/plugins/nbd/nbd.c b/plugins/nbd/nbd.c index 45bf05e9..d0d6544b 100644 --- a/plugins/nbd/nbd.c +++ b/plugins/nbd/nbd.c @@ -66,6 +66,9 @@ #define USE_VSOCK 1 #endif
+/* Use '-D nbd.verbose=1' for verbose messages about the state machine. */ +NBDKIT_DLL_PUBLIC int nbd_debug_verbose = 0; + /* The per-transaction details */ struct transaction { int64_t cookie; @@ -421,7 +424,8 @@ nbdplug_reader (void *handle) { struct handle *h = handle;
- nbdkit_debug ("nbd: started reader thread"); + if (nbd_debug_verbose) + nbdkit_debug ("nbd: started reader thread");
while (!nbd_aio_is_dead (h->nbd) && !nbd_aio_is_closed (h->nbd)) { int r; @@ -433,7 +437,8 @@ nbdplug_reader (void *handle) unsigned dir;
dir = nbd_aio_get_direction (h->nbd); - nbdkit_debug ("polling, dir=%d", dir); + if (nbd_debug_verbose) + nbdkit_debug ("polling, dir=%d", dir); if (dir & LIBNBD_AIO_DIRECTION_READ) fds[0].events |= POLLIN; if (dir & LIBNBD_AIO_DIRECTION_WRITE) @@ -466,8 +471,11 @@ nbdplug_reader (void *handle) } }
- nbdkit_debug ("state machine changed to %s", nbd_connection_state (h->nbd)); - nbdkit_debug ("exiting reader thread"); + if (nbd_debug_verbose) { + nbdkit_debug ("state machine changed to %s", + nbd_connection_state (h->nbd)); + nbdkit_debug ("exiting reader thread"); + } return NULL; }
@@ -481,8 +489,9 @@ nbdplug_notify (void *opaque, int *error) * updated by nbdplug_register, but it's only an informational * message. */ - nbdkit_debug ("cookie %" PRId64 " completed state machine, status %d", - trans->cookie, *error); + if (nbd_debug_verbose) + nbdkit_debug ("cookie %" PRId64 " completed state machine, status %d", + trans->cookie, *error); trans->err = *error; if (sem_post (&trans->sem)) { nbdkit_error ("failed to post semaphore: %m"); @@ -514,7 +523,8 @@ nbdplug_register (struct handle *h, struct transaction *trans, int64_t cookie) return; }
- nbdkit_debug ("cookie %" PRId64 " started by state machine", cookie); + if (nbd_debug_verbose) + nbdkit_debug ("cookie %" PRId64 " started by state machine", cookie); trans->cookie = cookie;
if (write (h->fds[1], &c, 1) == -1 && errno != EAGAIN)
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
On Tue, May 10, 2022 at 10:43:04AM +0100, Richard W.M. Jones wrote:
When running virt-p2v which uses this plugin, the log file is consumed by messages about state machine transitions and so on. In a log file that was shared with me, out of the 135,023 lines in total, 94,653 (70%) were:
nbdkit: debug: polling, dir=1
and 18,676 (14%) were:
nbdkit: debug: cookie X completed state machine, status 0
This commit changes the logging so these state machine transitions are only printed when you use the debug flag “-D nbd.verbose=1”. I didn't document this flag because it's likely only of use to developers who are reading the code already.
There are some debug messages along error paths which are (a) generally useful and (b) did not appear in the log file, so I left those alone.
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2083498 Reported-by: Ming Xie --- plugins/nbd/nbd.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-)
Reviewed-by: Eric Blake <eblake@redhat.com> -- Eric Blake, Principal Software Engineer Red Hat, Inc. +1-919-301-3266 Virtualization: qemu.org | libvirt.org
On Tue, May 10, 2022 at 08:45:50AM -0500, Eric Blake wrote:
On Tue, May 10, 2022 at 10:43:04AM +0100, Richard W.M. Jones wrote:
When running virt-p2v which uses this plugin, the log file is consumed by messages about state machine transitions and so on. In a log file that was shared with me, out of the 135,023 lines in total, 94,653 (70%) were:
nbdkit: debug: polling, dir=1
and 18,676 (14%) were:
nbdkit: debug: cookie X completed state machine, status 0
This commit changes the logging so these state machine transitions are only printed when you use the debug flag “-D nbd.verbose=1”. I didn't document this flag because it's likely only of use to developers who are reading the code already.
There are some debug messages along error paths which are (a) generally useful and (b) did not appear in the log file, so I left those alone.
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2083498 Reported-by: Ming Xie --- plugins/nbd/nbd.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-)
Reviewed-by: Eric Blake <eblake@redhat.com>
Thanks, that's commit 5a1908c461a8b45cc6d23e58e18149ee854ff300 Rich. -- Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones Read my programming and virtualization blog: http://rwmj.wordpress.com virt-top is 'top' for virtual machines. Tiny program with many powerful monitoring features, net stats, disk stats, logging, etc. http://people.redhat.com/~rjones/virt-top
participants (3)
-
Eric Blake -
Laszlo Ersek -
Richard W.M. Jones