btrfs: separate definition of assertion failure handlers
authorDavid Sterba <dsterba@suse.com>
Mon, 16 Dec 2019 19:00:48 +0000 (20:00 +0100)
committerDavid Sterba <dsterba@suse.com>
Thu, 23 Jan 2020 16:24:23 +0000 (17:24 +0100)
commit68c467cbb2f389b6c933e235bce0d1756fc8cc34
treece33b25c4e834298db626559eb3ed86053f48733
parenta69976bc69308aa475d0ba3b8b3efd1d013c0460
btrfs: separate definition of assertion failure handlers

There's a report where objtool detects unreachable instructions, eg.:

  fs/btrfs/ctree.o: warning: objtool: btrfs_search_slot()+0x2d4: unreachable instruction

This seems to be a false positive due to compiler version. The cause is
in the ASSERT macro implementation that does the conditional check as
IS_DEFINED(CONFIG_BTRFS_ASSERT) and not an #ifdef.

To avoid that, use the ifdefs directly.

There are still 2 reports that aren't fixed:

  fs/btrfs/extent_io.o: warning: objtool: __set_extent_bit()+0x71f: unreachable instruction
  fs/btrfs/relocation.o: warning: objtool: find_data_references()+0x4e0: unreachable instruction

Co-developed-by: Josh Poimboeuf <jpoimboe@redhat.com>
Signed-off-by: Josh Poimboeuf <jpoimboe@redhat.com>
Reported-by: Randy Dunlap <rdunlap@infradead.org>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ctree.h