Re: [PATCH 18/20] ceph: debugging

From: Sage Weil
Date: Fri Jul 17 2009 - 17:35:30 EST


On Fri, 17 Jul 2009, Andi Kleen wrote:
> On Fri, Jul 17, 2009 at 12:52:33PM -0700, Sage Weil wrote:
> > > > ceph_file_part(__FILE__, sizeof(__FILE__)), \
> > > > __LINE__, args);
> > >
> > > That seems like a wasteful way to do this -- i bet you could
> > > shrink binary size with debugging on considerably if you move
> > > the file_part into a function.
> >
> > If you mean ceph_file_part shouldn't be inline, definitely. Beyond that
> > I'm not sure what more to change... it's just a few extra chars on the
> > format string and 2 calls instead of 1?
>
> Yes, but you have hundreds/thousands of these calls don't you?
>
> If you have two calls here instead of one and that costs let's say
> 20 bytes of code and 1000 calls it's already 20K of binary size.
>
> Perhaps code size is not your highest priority now, but
> obvious inefficiencies like this are not good.

Is that really a concern when compiling with DEBUG or
CONFIG_DYNAMIC_DEBUG? Since pr_debug is a no-op without those anyway, how
about:

---

#if defined(DEBUG) || defined(CONFIG_DYNAMIC_DEBUG)
extern const char *ceph_file_part(const char *s, int len);
# define dout(fmt, ...) \
pr_debug(" %12.12s:%-4d : " fmt, \
ceph_file_part(__FILE__, sizeof(__FILE__)), \
__LINE__, ##__VA_ARGS__);
#else
/*
* this is a no-op, but keep the faux printk call just so we see any
* compiler warnings.
*/
# define dout(fmt, ...) do { \
if (0) printk(KERN_DEBUG pr_fmt(fmt), ##__VA_ARGS__); \
} while (0)
#endif
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/