浏览代码

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>
David Sterba 7 年之前
父节点
当前提交
6d8ff4e458
共有 3 个文件被更改,包括 9 次插入9 次删除
  1. 4 4
      fs/btrfs/extent-tree.c
  2. 1 1
      fs/btrfs/print-tree.c
  3. 4 4
      fs/btrfs/relocation.c

+ 4 - 4
fs/btrfs/extent-tree.c

@@ -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);

+ 1 - 1
fs/btrfs/print-tree.c

@@ -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);
 	}

+ 4 - 4
fs/btrfs/relocation.c

@@ -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);