Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

btrfs: annotate unlikely branches after V0 extent type removal

The v0 extent type checks are the right case for the unlikely
annotations as we don't expect to ever see them, so let's give the
compiler some hint.

Reviewed-by: Nikolay Borisov <nborisov@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>

+9 -9
+4 -4
fs/btrfs/extent-tree.c
··· 1304 1304 ref2 = btrfs_item_ptr(leaf, path->slots[0], 1305 1305 struct btrfs_shared_data_ref); 1306 1306 num_refs = btrfs_shared_data_ref_count(leaf, ref2); 1307 - } else if (key.type == BTRFS_EXTENT_REF_V0_KEY) { 1307 + } else if (unlikely(key.type == BTRFS_EXTENT_REF_V0_KEY)) { 1308 1308 btrfs_print_v0_err(trans->fs_info); 1309 1309 btrfs_abort_transaction(trans, -EINVAL); 1310 1310 return -EINVAL; ··· 1555 1555 1556 1556 leaf = path->nodes[0]; 1557 1557 item_size = btrfs_item_size_nr(leaf, path->slots[0]); 1558 - if (item_size < sizeof(*ei)) { 1558 + if (unlikely(item_size < sizeof(*ei))) { 1559 1559 err = -EINVAL; 1560 1560 btrfs_print_v0_err(fs_info); 1561 1561 btrfs_abort_transaction(trans, err); ··· 2285 2285 leaf = path->nodes[0]; 2286 2286 item_size = btrfs_item_size_nr(leaf, path->slots[0]); 2287 2287 2288 - if (item_size < sizeof(*ei)) { 2288 + if (unlikely(item_size < sizeof(*ei))) { 2289 2289 err = -EINVAL; 2290 2290 btrfs_print_v0_err(fs_info); 2291 2291 btrfs_abort_transaction(trans, err); ··· 6822 6822 6823 6823 leaf = path->nodes[0]; 6824 6824 item_size = btrfs_item_size_nr(leaf, extent_slot); 6825 - if (item_size < sizeof(*ei)) { 6825 + if (unlikely(item_size < sizeof(*ei))) { 6826 6826 ret = -EINVAL; 6827 6827 btrfs_print_v0_err(info); 6828 6828 btrfs_abort_transaction(trans, ret);
+1 -1
fs/btrfs/print-tree.c
··· 52 52 u64 offset; 53 53 int ref_index = 0; 54 54 55 - if (item_size < sizeof(*ei)) { 55 + if (unlikely(item_size < sizeof(*ei))) { 56 56 btrfs_print_v0_err(eb->fs_info); 57 57 btrfs_handle_fs_error(eb->fs_info, -EINVAL, NULL); 58 58 }
+4 -4
fs/btrfs/relocation.c
··· 830 830 edge->node[UPPER] = upper; 831 831 832 832 goto next; 833 - } else if (key.type == BTRFS_EXTENT_REF_V0_KEY) { 833 + } else if (unlikely(key.type == BTRFS_EXTENT_REF_V0_KEY)) { 834 834 err = -EINVAL; 835 835 btrfs_print_v0_err(rc->extent_root->fs_info); 836 836 btrfs_handle_fs_error(rc->extent_root->fs_info, err, ··· 3325 3325 level = (int)extent_key->offset; 3326 3326 } 3327 3327 generation = btrfs_extent_generation(eb, ei); 3328 - } else if (item_size == sizeof(struct btrfs_extent_item_v0)) { 3328 + } else if (unlikely(item_size == sizeof(struct btrfs_extent_item_v0))) { 3329 3329 btrfs_print_v0_err(eb->fs_info); 3330 3330 btrfs_handle_fs_error(eb->fs_info, -EINVAL, NULL); 3331 3331 return -EINVAL; ··· 3742 3742 struct btrfs_extent_data_ref); 3743 3743 ret = find_data_references(rc, extent_key, 3744 3744 eb, dref, blocks); 3745 - } else if (key.type == BTRFS_EXTENT_REF_V0_KEY) { 3745 + } else if (unlikely(key.type == BTRFS_EXTENT_REF_V0_KEY)) { 3746 3746 btrfs_print_v0_err(eb->fs_info); 3747 3747 btrfs_handle_fs_error(eb->fs_info, -EINVAL, NULL); 3748 3748 ret = -EINVAL; ··· 3984 3984 flags = btrfs_extent_flags(path->nodes[0], ei); 3985 3985 ret = check_extent_flags(flags); 3986 3986 BUG_ON(ret); 3987 - } else if (item_size == sizeof(struct btrfs_extent_item_v0)) { 3987 + } else if (unlikely(item_size == sizeof(struct btrfs_extent_item_v0))) { 3988 3988 err = -EINVAL; 3989 3989 btrfs_print_v0_err(trans->fs_info); 3990 3990 btrfs_abort_transaction(trans, err);