xfs: lockdep annotations throw warnings on non-debug builds
authorDave Chinner <dchinner@redhat.com>
Tue, 25 Aug 2015 00:05:13 +0000 (10:05 +1000)
committerDave Chinner <david@fromorbit.com>
Tue, 25 Aug 2015 00:05:13 +0000 (10:05 +1000)
SO, now if we enable lockdep without enabling CONFIG_XFS_DEBUG,
the lockdep annotations throw a warning because the assert that uses
the lockdep define is not built in:

fs/xfs/xfs_inode.c:367:1: warning: 'xfs_lockdep_subclass_ok' defined but not used [-Wunused-function]
    xfs_lockdep_subclass_ok(

So now we need to create an ifdef mess to sort this all out, because
we need to handle all the combinations of CONFIG_XFS_DEBUG=[y|n],
CONFIG_XFS_WARNING=[y|n] and CONFIG_LOCKDEP=[y|n] appropriately.

Signed-off-by: Dave Chinner <dchinner@redhat.com>
Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Dave Chinner <david@fromorbit.com>
fs/xfs/xfs_inode.c

index aa00ccc0bd78583ae37a1a631e1582cd115961f1..c59da0e88c5fc4c323f13cf97a6cace318a7f894 100644 (file)
@@ -362,7 +362,13 @@ int xfs_lots_retries;
 int xfs_lock_delays;
 #endif
 
-#ifdef CONFIG_LOCKDEP
+/*
+ * xfs_lockdep_subclass_ok() is only used in an ASSERT, so is only called when
+ * DEBUG or XFS_WARN is set. And MAX_LOCKDEP_SUBCLASSES is then only defined
+ * when CONFIG_LOCKDEP is set. Hence the complex define below to avoid build
+ * errors and warnings.
+ */
+#if (defined(DEBUG) || defined(XFS_WARN)) && defined(CONFIG_LOCKDEP)
 static bool
 xfs_lockdep_subclass_ok(
        int subclass)