All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eric Blake <eblake@redhat.com>
To: Zhou Jie <zhoujie2011@cn.fujitsu.com>, qemu-devel@nongnu.org
Cc: jcody@redhat.com, qemu block <qemu-block@nongnu.org>
Subject: Re: [Qemu-devel] [PATCH] block: always compile-check debug prints
Date: Thu, 28 Apr 2016 10:16:39 -0600	[thread overview]
Message-ID: <57223767.30301@redhat.com> (raw)
In-Reply-To: <1461830481-20165-1-git-send-email-zhoujie2011@cn.fujitsu.com>

[-- Attachment #1: Type: text/plain, Size: 2309 bytes --]

adding qemu-block

On 04/28/2016 02:01 AM, Zhou Jie wrote:
> Files with conditional debug statements should ensure that the printf is
> always compiled.
> This prevents bitrot of the format string of the debug statement.
> 
> Signed-off-by: Zhou Jie <zhoujie2011@cn.fujitsu.com>
> ---

> +++ b/block/curl.c
> @@ -32,14 +32,15 @@
>  #include <curl/curl.h>
>  #include "qemu/cutils.h"
>  
> -// #define DEBUG_CURL
> +#define DEBUG_CURL 0

Other patches doing similar work keep the user-visible witness as
defined/undefined, so that you can add -DDEBUG_CURL to the CFLAGS
without editing any .c files, and create a secondary witness as the
actual conditional.  See 8c6597123af for an example, where I did:

 #ifdef DEBUG_NBD
-#define TRACE(msg, ...) do { \
-    LOG(msg, ## __VA_ARGS__); \
-} while(0)
+#define DEBUG_NBD_PRINT 1
 #else
-#define TRACE(msg, ...) \
-    do { } while (0)
+#define DEBUG_NBD_PRINT 0
 #endif

+#define TRACE(msg, ...) do { \
+    if (DEBUG_NBD_PRINT) { \

The way you did it, I cannot add -DDEBUG_CURL (because you blindly
redefine it back to 0), but have to edit the .c file.

>  // #define DEBUG_VERBOSE
>  
> -#ifdef DEBUG_CURL
> -#define DPRINTF(fmt, ...) do { printf(fmt, ## __VA_ARGS__); } while (0)

As long as we're touching this, should we make this print to stderr
instead of stdout?

> +++ b/block/sheepdog.c
> @@ -293,14 +293,13 @@ static inline size_t count_data_objs(const struct SheepdogInode *inode)
>  }
>  
>  #undef DPRINTF
> -#ifdef DEBUG_SDOG
> -#define DPRINTF(fmt, args...)                                       \
> -    do {                                                            \
> -        fprintf(stdout, "%s %d: " fmt, __func__, __LINE__, ##args); \

Again, as long as we're touching this, 'fprintf(stdout,' looks stupid.
Either make it 'printf(' or make the debug go to stderr.

> +#define DEBUG_SDOG 0

Same comment about letting the mere definition of the witness variable
be sufficient

Thanks for doing this; looking forward to v2 (and/or comments from
someone more familiar with whether the block layer should be sending
debug comments to stderr instead of stdout)

-- 
Eric Blake   eblake redhat com    +1-919-301-3266
Libvirt virtualization library http://libvirt.org


[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 604 bytes --]

      reply	other threads:[~2016-04-28 16:16 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-04-28  8:01 [Qemu-devel] [PATCH] block: always compile-check debug prints Zhou Jie
2016-04-28 16:16 ` Eric Blake [this message]

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=57223767.30301@redhat.com \
    --to=eblake@redhat.com \
    --cc=jcody@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=zhoujie2011@cn.fujitsu.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.