[Libguestfs] [PATCH nbdkit] nbd: Hide some state machine debugging behind a debug flag
Laszlo Ersek
lersek at redhat.com
Tue May 10 10:11:27 UTC 2022
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 at redhat.com>
More information about the Libguestfs
mailing list