]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
btrfs: split btrfs_is_fstree() into multiple if statements for readability
authorFilipe Manana <fdmanana@suse.com>
Mon, 23 Jun 2025 12:15:58 +0000 (13:15 +0100)
committerDavid Sterba <dsterba@suse.com>
Mon, 21 Jul 2025 21:58:04 +0000 (23:58 +0200)
Instead of a single if statement with multiple conditions, split it into
several if statements testing only one condition at a time and return true
or false immediately after. This makes it more immediate to reason.

The module's text size also slightly decreases, at least with gcc 14.2.0
on x86_64.

Before:

  $ size fs/btrfs/btrfs.ko
     text    data     bss     dec     hex filename
  1897138  161583   16136 2074857  1fa8e9 fs/btrfs/btrfs.ko

After:

  $ size fs/btrfs/btrfs.ko
     text    data     bss     dec     hex filename
  1896976  161583   16136 2074695  1fa847 fs/btrfs/btrfs.ko

Reviewed-by: Johannes Thumshirn <johannes.thumshirn@wdc.com>
Reviewed-by: Qu Wenruo <wqu@suse.com>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Reviewed-by: David Sterba <dsterba@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/ctree.h

index d51cc692f2c56902ff6c4eb83bb0af87ce0c5c4b..fe70b593c7cd9dcb5f0ce751f11d9599bdf1d542 100644 (file)
@@ -723,11 +723,16 @@ int btrfs_leaf_free_space(const struct extent_buffer *leaf);
 
 static inline bool btrfs_is_fstree(u64 rootid)
 {
-       if (rootid == BTRFS_FS_TREE_OBJECTID ||
-           ((s64)rootid >= (s64)BTRFS_FIRST_FREE_OBJECTID &&
-             !btrfs_qgroup_level(rootid)))
+       if (rootid == BTRFS_FS_TREE_OBJECTID)
                return true;
-       return false;
+
+       if ((s64)rootid < (s64)BTRFS_FIRST_FREE_OBJECTID)
+               return false;
+
+       if (btrfs_qgroup_level(rootid) != 0)
+               return false;
+
+       return true;
 }
 
 static inline bool btrfs_is_data_reloc_root(const struct btrfs_root *root)