]> Gentwo Git Trees - linux/.git/commit
btrfs: don't generate any code from ASSERT() in release builds
authorGladyshev Ilya <foxido@foxido.dev>
Sun, 2 Nov 2025 07:38:52 +0000 (10:38 +0300)
committerDavid Sterba <dsterba@suse.com>
Mon, 24 Nov 2025 21:42:22 +0000 (22:42 +0100)
commit1dac8db80cee66b7ba51d323025e47989278ee03
tree167273cec3db8c3e45867378766e869f64d7a30a
parentdd57c78aec398717a2fa6488d87b1a6cd43c7d0d
btrfs: don't generate any code from ASSERT() in release builds

The current definition of ASSERT(cond) as (void)(cond) is redundant,
since these checks have no side effects and don't affect code logic.

However, some checks contain READ_ONCE() or other compiler-unfriendly
constructs. For example, ASSERT(list_empty) in btrfs_add_dealloc_inode()
was compiled to a redundant mov instruction due to this issue.

Define ASSERT as BUILD_BUG_ON_INVALID for !CONFIG_BTRFS_ASSERT builds
which uses sizeof(cond) trick.  Also mark full_page_sectors_uptodate()
as __maybe_unused to suppress "unneeded declaration" warning (it's
needed in compile time)

Signed-off-by: Gladyshev Ilya <foxido@foxido.dev>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/messages.h
fs/btrfs/raid56.c