OSDN Git Service

btrfs: annotate unlikely branches after V0 extent type removal
authorDavid Sterba <dsterba@suse.com>
Tue, 26 Jun 2018 14:20:59 +0000 (16:20 +0200)
committerDavid Sterba <dsterba@suse.com>
Mon, 6 Aug 2018 11:12:41 +0000 (13:12 +0200)
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>
fs/btrfs/extent-tree.c
fs/btrfs/print-tree.c
fs/btrfs/relocation.c

index 71283fa..352b7e9 100644 (file)
@@ -1304,7 +1304,7 @@ static noinline int remove_extent_data_ref(struct btrfs_trans_handle *trans,
                ref2 = btrfs_item_ptr(leaf, path->slots[0],
                                      struct btrfs_shared_data_ref);
                num_refs = btrfs_shared_data_ref_count(leaf, ref2);
-       } else if (key.type == BTRFS_EXTENT_REF_V0_KEY) {
+       } else if (unlikely(key.type == BTRFS_EXTENT_REF_V0_KEY)) {
                btrfs_print_v0_err(trans->fs_info);
                btrfs_abort_transaction(trans, -EINVAL);
                return -EINVAL;
@@ -1555,7 +1555,7 @@ again:
 
        leaf = path->nodes[0];
        item_size = btrfs_item_size_nr(leaf, path->slots[0]);
-       if (item_size < sizeof(*ei)) {
+       if (unlikely(item_size < sizeof(*ei))) {
                err = -EINVAL;
                btrfs_print_v0_err(fs_info);
                btrfs_abort_transaction(trans, err);
@@ -2285,7 +2285,7 @@ again:
        leaf = path->nodes[0];
        item_size = btrfs_item_size_nr(leaf, path->slots[0]);
 
-       if (item_size < sizeof(*ei)) {
+       if (unlikely(item_size < sizeof(*ei))) {
                err = -EINVAL;
                btrfs_print_v0_err(fs_info);
                btrfs_abort_transaction(trans, err);
@@ -6822,7 +6822,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
 
        leaf = path->nodes[0];
        item_size = btrfs_item_size_nr(leaf, extent_slot);
-       if (item_size < sizeof(*ei)) {
+       if (unlikely(item_size < sizeof(*ei))) {
                ret = -EINVAL;
                btrfs_print_v0_err(info);
                btrfs_abort_transaction(trans, ret);
index cc94537..df49931 100644 (file)
@@ -52,7 +52,7 @@ static void print_extent_item(struct extent_buffer *eb, int slot, int type)
        u64 offset;
        int ref_index = 0;
 
-       if (item_size < sizeof(*ei)) {
+       if (unlikely(item_size < sizeof(*ei))) {
                btrfs_print_v0_err(eb->fs_info);
                btrfs_handle_fs_error(eb->fs_info, -EINVAL, NULL);
        }
index eaf59c7..229f721 100644 (file)
@@ -830,7 +830,7 @@ again:
                        edge->node[UPPER] = upper;
 
                        goto next;
-               } else if (key.type == BTRFS_EXTENT_REF_V0_KEY) {
+               } else if (unlikely(key.type == BTRFS_EXTENT_REF_V0_KEY)) {
                        err = -EINVAL;
                        btrfs_print_v0_err(rc->extent_root->fs_info);
                        btrfs_handle_fs_error(rc->extent_root->fs_info, err,
@@ -3325,7 +3325,7 @@ static int add_tree_block(struct reloc_control *rc,
                        level = (int)extent_key->offset;
                }
                generation = btrfs_extent_generation(eb, ei);
-       } else if (item_size == sizeof(struct btrfs_extent_item_v0)) {
+       } else if (unlikely(item_size == sizeof(struct btrfs_extent_item_v0))) {
                btrfs_print_v0_err(eb->fs_info);
                btrfs_handle_fs_error(eb->fs_info, -EINVAL, NULL);
                return -EINVAL;
@@ -3742,7 +3742,7 @@ int add_data_references(struct reloc_control *rc,
                                              struct btrfs_extent_data_ref);
                        ret = find_data_references(rc, extent_key,
                                                   eb, dref, blocks);
-               } else if (key.type == BTRFS_EXTENT_REF_V0_KEY) {
+               } else if (unlikely(key.type == BTRFS_EXTENT_REF_V0_KEY)) {
                        btrfs_print_v0_err(eb->fs_info);
                        btrfs_handle_fs_error(eb->fs_info, -EINVAL, NULL);
                        ret = -EINVAL;
@@ -3984,7 +3984,7 @@ restart:
                        flags = btrfs_extent_flags(path->nodes[0], ei);
                        ret = check_extent_flags(flags);
                        BUG_ON(ret);
-               } else if (item_size == sizeof(struct btrfs_extent_item_v0)) {
+               } else if (unlikely(item_size == sizeof(struct btrfs_extent_item_v0))) {
                        err = -EINVAL;
                        btrfs_print_v0_err(trans->fs_info);
                        btrfs_abort_transaction(trans, err);