diff mbox

btrfs: silence compiler warning when fs_info is not used

Message ID 46b76b10-7199-4938-bb78-15eee39e17da@suse.com
State New, archived
Headers show

Commit Message

Jeff Mahoney Sept. 21, 2016, 4:16 p.m. UTC
On 9/21/16 11:47 AM, Jeff Mahoney wrote:
> On 9/21/16 11:43 AM, David Sterba wrote:
>> Some functions introduced a local fs_info pointer for the message
>> helpers. If btrfs_debug results to an empty macro, the fs_info pointer
>> is reported to be unused. Splitting the variable declaration and setting
>> will silence the warning, without any functional change.
> 
> I'm investigating fixing this differently.  I'd like the no-call version
> to silence the warning and let gcc optimize it out behind the seems if
> possible.

The following works for me.  It looks like this problem has existed since
commit 27a0dd61a5 (Btrfs: make btrfs_debug match pr_debug handling related to DEBUG)
but we just haven't hit it.

I'll post it separately for inclusion.

$ size fs/btrfs/extent_io.o*
   text	   data	    bss	    dec	    hex	filename
  44072	    152	     32	  44256	   ace0	fs/btrfs/extent_io.o.btrfs_no_printk
  44072	    152	     32	  44256	   ace0	fs/btrfs/extent_io.o.no_printk
diff mbox

Patch

diff --git a/fs/btrfs/ctree.h b/fs/btrfs/ctree.h
index b967af5..e51ee72 100644
--- a/fs/btrfs/ctree.h
+++ b/fs/btrfs/ctree.h
@@ -3241,6 +3241,12 @@  int btrfs_sync_fs(struct super_block *sb, int wait);
 #ifdef CONFIG_PRINTK
 __printf(2, 3)
 void btrfs_printk(const struct btrfs_fs_info *fs_info, const char *fmt, ...);
+__printf(2, 3)
+static inline int btrfs_no_printk(const struct btrfs_fs_info *fs_info,
+				   const char *fmt, ...)
+{
+	return 0;
+}
 #else
 static inline __printf(2, 3)
 void btrfs_printk(const struct btrfs_fs_info *fs_info, const char *fmt, ...)
@@ -3355,13 +3361,13 @@  do {									\
 	btrfs_printk_ratelimited(fs_info, KERN_DEBUG fmt, ##args)
 #else
 #define btrfs_debug(fs_info, fmt, args...) \
-	no_printk(KERN_DEBUG fmt, ##args)
+	btrfs_no_printk(fs_info, KERN_DEBUG fmt, ##args)
 #define btrfs_debug_in_rcu(fs_info, fmt, args...) \
-	no_printk(KERN_DEBUG fmt, ##args)
+	btrfs_no_printk(fs_info, KERN_DEBUG fmt, ##args)
 #define btrfs_debug_rl_in_rcu(fs_info, fmt, args...) \
-	no_printk(KERN_DEBUG fmt, ##args)
+	btrfs_no_printk(fs_info, KERN_DEBUG fmt, ##args)
 #define btrfs_debug_rl(fs_info, fmt, args...) \
-	no_printk(KERN_DEBUG fmt, ##args)
+	btrfs_no_printk(fs_info, KERN_DEBUG fmt, ##args)
 #endif
 
 #define btrfs_printk_in_rcu(fs_info, fmt, args...)	\