diff options
| author | Gladyshev Ilya <foxido@foxido.dev> | 2025-11-02 10:38:52 +0300 |
|---|---|---|
| committer | David Sterba <dsterba@suse.com> | 2025-11-24 22:42:22 +0100 |
| commit | 1dac8db80cee66b7ba51d323025e47989278ee03 (patch) | |
| tree | 167273cec3db8c3e45867378766e869f64d7a30a /fs/btrfs/messages.h | |
| parent | dd57c78aec398717a2fa6488d87b1a6cd43c7d0d (diff) | |
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>
Diffstat (limited to 'fs/btrfs/messages.h')
| -rw-r--r-- | fs/btrfs/messages.h | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/fs/btrfs/messages.h b/fs/btrfs/messages.h index 4416c165644f..d8c0bd17dcda 100644 --- a/fs/btrfs/messages.h +++ b/fs/btrfs/messages.h @@ -168,7 +168,8 @@ do { \ #endif #else -#define ASSERT(cond, args...) (void)(cond) +/* Compile check the @cond expression but don't generate any code. */ +#define ASSERT(cond, args...) BUILD_BUG_ON_INVALID(cond) #endif #ifdef CONFIG_BTRFS_DEBUG |