diff options
author | Qu Wenruo <wqu@suse.com> | 2022-04-20 11:08:28 +0300 |
---|---|---|
committer | David Sterba <dsterba@suse.com> | 2022-05-16 18:03:16 +0300 |
commit | 719fae8920e4f42643ea306b95addb40bec87a25 (patch) | |
tree | ed6dc04f9c54ee6f283be23dba4e5b9963ad9194 /fs/init.c | |
parent | f04fbcc64e4be16185151f9fca44ea1b3d074bd0 (diff) | |
download | linux-719fae8920e4f42643ea306b95addb40bec87a25.tar.xz |
btrfs: use ilog2() to replace if () branches for btrfs_bg_flags_to_raid_index()
In function btrfs_bg_flags_to_raid_index(), we use quite some if () to
convert the BTRFS_BLOCK_GROUP_* bits to a index number.
But the truth is, there is really no such need for so many branches at
all.
Since all BTRFS_BLOCK_GROUP_* flags are just one single bit set inside
BTRFS_BLOCK_GROUP_PROFILES_MASK, we can easily use ilog2() to calculate
their values.
This calculation has an anchor point, the lowest PROFILE bit, which is
RAID0.
Even it's fixed on-disk format and should never change, here I added
extra compile time checks to make it super safe:
1. Make sure RAID0 is always the lowest bit in PROFILE_MASK
This is done by finding the first (least significant) bit set of
RAID0 and PROFILE_MASK & ~RAID0.
2. Make sure RAID0 bit set beyond the highest bit of TYPE_MASK
Signed-off-by: Qu Wenruo <wqu@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
Diffstat (limited to 'fs/init.c')
0 files changed, 0 insertions, 0 deletions