]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
btrfs: add unlikely annotations to branches leading to transaction abort
authorDavid Sterba <dsterba@suse.com>
Wed, 17 Sep 2025 17:53:56 +0000 (19:53 +0200)
committerDavid Sterba <dsterba@suse.com>
Tue, 23 Sep 2025 06:49:26 +0000 (08:49 +0200)
The unlikely() annotation is a static prediction hint that compiler may
use to reorder code out of hot path. We use it elsewhere (namely
tree-checker.c) for error branches that almost never happen.

Transaction abort is one such error, the btrfs_abort_transaction()
inlines code to check the state and print a warning, this ought to be
out of the hot path.

The most common pattern is when transaction abort is called after
checking a return value and the control flow leads to a quick return.
In other cases it may not be necessary to add unlikely() e.g. when the
function returns anyway or the control flow is not changed noticeably.

Reviewed-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
20 files changed:
fs/btrfs/block-group.c
fs/btrfs/ctree.c
fs/btrfs/delayed-inode.c
fs/btrfs/extent-tree.c
fs/btrfs/file-item.c
fs/btrfs/file.c
fs/btrfs/free-space-cache.c
fs/btrfs/free-space-tree.c
fs/btrfs/inode-item.c
fs/btrfs/inode.c
fs/btrfs/ioctl.c
fs/btrfs/qgroup.c
fs/btrfs/raid-stripe-tree.c
fs/btrfs/reflink.c
fs/btrfs/relocation.c
fs/btrfs/root-tree.c
fs/btrfs/transaction.c
fs/btrfs/tree-log.c
fs/btrfs/verity.c
fs/btrfs/volumes.c

index 6f7974060a1ab5dd26e666bb52cd64042407f5ff..4330f5ba02dd7bf9703e20dc48a9f8bb2d099b11 100644 (file)
@@ -3248,7 +3248,7 @@ again:
         */
        BTRFS_I(inode)->generation = 0;
        ret = btrfs_update_inode(trans, BTRFS_I(inode));
-       if (ret) {
+       if (unlikely(ret)) {
                /*
                 * So theoretically we could recover from this, simply set the
                 * super cache generation to 0 so we know to invalidate the
@@ -3995,7 +3995,7 @@ static struct btrfs_block_group *do_chunk_alloc(struct btrfs_trans_handle *trans
                struct btrfs_space_info *sys_space_info;
 
                sys_space_info = btrfs_find_space_info(trans->fs_info, sys_flags);
-               if (!sys_space_info) {
+               if (unlikely(!sys_space_info)) {
                        ret = -EINVAL;
                        btrfs_abort_transaction(trans, ret);
                        goto out;
@@ -4009,17 +4009,17 @@ static struct btrfs_block_group *do_chunk_alloc(struct btrfs_trans_handle *trans
                }
 
                ret = btrfs_chunk_alloc_add_chunk_item(trans, sys_bg);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
 
                ret = btrfs_chunk_alloc_add_chunk_item(trans, bg);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
-       } else if (ret) {
+       } else if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
index 71256ed909f06f7a2d2dec1bad7d8b90e6df5ae4..561658aca018b4b94f1c6ef97490a729b8899f01 100644 (file)
@@ -293,11 +293,11 @@ int btrfs_copy_root(struct btrfs_trans_handle *trans,
 
        if (new_root_objectid == BTRFS_TREE_RELOC_OBJECTID) {
                ret = btrfs_inc_ref(trans, root, cow, 1);
-               if (ret)
+               if (unlikely(ret))
                        btrfs_abort_transaction(trans, ret);
        } else {
                ret = btrfs_inc_ref(trans, root, cow, 0);
-               if (ret)
+               if (unlikely(ret))
                        btrfs_abort_transaction(trans, ret);
        }
        if (ret) {
@@ -536,14 +536,14 @@ int btrfs_force_cow_block(struct btrfs_trans_handle *trans,
        write_extent_buffer_fsid(cow, fs_info->fs_devices->metadata_uuid);
 
        ret = update_ref_for_cow(trans, root, buf, cow, &last_ref);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto error_unlock_cow;
        }
 
        if (test_bit(BTRFS_ROOT_SHAREABLE, &root->state)) {
                ret = btrfs_reloc_cow_block(trans, root, buf, cow);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto error_unlock_cow;
                }
@@ -556,7 +556,7 @@ int btrfs_force_cow_block(struct btrfs_trans_handle *trans,
                        parent_start = buf->start;
 
                ret = btrfs_tree_mod_log_insert_root(root->node, cow, true);
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_abort_transaction(trans, ret);
                        goto error_unlock_cow;
                }
@@ -567,7 +567,7 @@ int btrfs_force_cow_block(struct btrfs_trans_handle *trans,
                                            parent_start, last_ref);
                free_extent_buffer(buf);
                add_root_to_dirty_list(root);
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_abort_transaction(trans, ret);
                        goto error_unlock_cow;
                }
@@ -575,7 +575,7 @@ int btrfs_force_cow_block(struct btrfs_trans_handle *trans,
                WARN_ON(trans->transid != btrfs_header_generation(parent));
                ret = btrfs_tree_mod_log_insert_key(parent, parent_slot,
                                                    BTRFS_MOD_LOG_KEY_REPLACE);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto error_unlock_cow;
                }
@@ -586,14 +586,14 @@ int btrfs_force_cow_block(struct btrfs_trans_handle *trans,
                btrfs_mark_buffer_dirty(trans, parent);
                if (last_ref) {
                        ret = btrfs_tree_mod_log_free_eb(buf);
-                       if (ret) {
+                       if (unlikely(ret)) {
                                btrfs_abort_transaction(trans, ret);
                                goto error_unlock_cow;
                        }
                }
                ret = btrfs_free_tree_block(trans, btrfs_root_id(root), buf,
                                            parent_start, last_ref);
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_abort_transaction(trans, ret);
                        goto error_unlock_cow;
                }
@@ -922,7 +922,7 @@ static noinline int balance_level(struct btrfs_trans_handle *trans,
                }
 
                ret = btrfs_tree_mod_log_insert_root(root->node, child, true);
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_tree_unlock(child);
                        free_extent_buffer(child);
                        btrfs_abort_transaction(trans, ret);
@@ -944,7 +944,7 @@ static noinline int balance_level(struct btrfs_trans_handle *trans,
                ret = btrfs_free_tree_block(trans, btrfs_root_id(root), mid, 0, 1);
                /* once for the root ptr */
                free_extent_buffer_stale(mid);
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
@@ -1019,7 +1019,7 @@ static noinline int balance_level(struct btrfs_trans_handle *trans,
                                                    right, 0, 1);
                        free_extent_buffer_stale(right);
                        right = NULL;
-                       if (ret < 0) {
+                       if (unlikely(ret < 0)) {
                                btrfs_abort_transaction(trans, ret);
                                goto out;
                        }
@@ -1028,7 +1028,7 @@ static noinline int balance_level(struct btrfs_trans_handle *trans,
                        btrfs_node_key(right, &right_key, 0);
                        ret = btrfs_tree_mod_log_insert_key(parent, pslot + 1,
                                        BTRFS_MOD_LOG_KEY_REPLACE);
-                       if (ret < 0) {
+                       if (unlikely(ret < 0)) {
                                btrfs_abort_transaction(trans, ret);
                                goto out;
                        }
@@ -1080,7 +1080,7 @@ static noinline int balance_level(struct btrfs_trans_handle *trans,
                ret = btrfs_free_tree_block(trans, btrfs_root_id(root), mid, 0, 1);
                free_extent_buffer_stale(mid);
                mid = NULL;
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
@@ -1090,7 +1090,7 @@ static noinline int balance_level(struct btrfs_trans_handle *trans,
                btrfs_node_key(mid, &mid_key, 0);
                ret = btrfs_tree_mod_log_insert_key(parent, pslot,
                                                    BTRFS_MOD_LOG_KEY_REPLACE);
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
@@ -1195,7 +1195,7 @@ static noinline int push_nodes_for_insert(struct btrfs_trans_handle *trans,
                        btrfs_node_key(mid, &disk_key, 0);
                        ret = btrfs_tree_mod_log_insert_key(parent, pslot,
                                        BTRFS_MOD_LOG_KEY_REPLACE);
-                       if (ret < 0) {
+                       if (unlikely(ret < 0)) {
                                btrfs_tree_unlock(left);
                                free_extent_buffer(left);
                                btrfs_abort_transaction(trans, ret);
@@ -1255,7 +1255,7 @@ static noinline int push_nodes_for_insert(struct btrfs_trans_handle *trans,
                        btrfs_node_key(right, &disk_key, 0);
                        ret = btrfs_tree_mod_log_insert_key(parent, pslot + 1,
                                        BTRFS_MOD_LOG_KEY_REPLACE);
-                       if (ret < 0) {
+                       if (unlikely(ret < 0)) {
                                btrfs_tree_unlock(right);
                                free_extent_buffer(right);
                                btrfs_abort_transaction(trans, ret);
@@ -2737,7 +2737,7 @@ static int push_node_left(struct btrfs_trans_handle *trans,
                return ret;
        }
        ret = btrfs_tree_mod_log_eb_copy(dst, src, dst_nritems, 0, push_items);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                return ret;
        }
@@ -2822,7 +2822,7 @@ static int balance_node_right(struct btrfs_trans_handle *trans,
 
        ret = btrfs_tree_mod_log_eb_copy(dst, src, 0, src_nritems - push_items,
                                         push_items);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                return ret;
        }
@@ -2892,7 +2892,7 @@ static noinline int insert_new_root(struct btrfs_trans_handle *trans,
 
                btrfs_clear_buffer_dirty(trans, c);
                ret2 = btrfs_free_tree_block(trans, btrfs_root_id(root), c, 0, 1);
-               if (ret2 < 0)
+               if (unlikely(ret2 < 0))
                        btrfs_abort_transaction(trans, ret2);
                btrfs_tree_unlock(c);
                free_extent_buffer(c);
@@ -2937,7 +2937,7 @@ static int insert_ptr(struct btrfs_trans_handle *trans,
                if (level) {
                        ret = btrfs_tree_mod_log_insert_move(lower, slot + 1,
                                        slot, nritems - slot);
-                       if (ret < 0) {
+                       if (unlikely(ret < 0)) {
                                btrfs_abort_transaction(trans, ret);
                                return ret;
                        }
@@ -2950,7 +2950,7 @@ static int insert_ptr(struct btrfs_trans_handle *trans,
        if (level) {
                ret = btrfs_tree_mod_log_insert_key(lower, slot,
                                                    BTRFS_MOD_LOG_KEY_ADD);
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_abort_transaction(trans, ret);
                        return ret;
                }
@@ -3026,7 +3026,7 @@ static noinline int split_node(struct btrfs_trans_handle *trans,
        ASSERT(btrfs_header_level(c) == level);
 
        ret = btrfs_tree_mod_log_eb_copy(split, c, 0, mid, c_nritems - mid);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_tree_unlock(split);
                free_extent_buffer(split);
                btrfs_abort_transaction(trans, ret);
@@ -4383,7 +4383,7 @@ int btrfs_del_ptr(struct btrfs_trans_handle *trans, struct btrfs_root *root,
                if (level) {
                        ret = btrfs_tree_mod_log_insert_move(parent, slot,
                                        slot + 1, nritems - slot - 1);
-                       if (ret < 0) {
+                       if (unlikely(ret < 0)) {
                                btrfs_abort_transaction(trans, ret);
                                return ret;
                        }
@@ -4396,7 +4396,7 @@ int btrfs_del_ptr(struct btrfs_trans_handle *trans, struct btrfs_root *root,
        } else if (level) {
                ret = btrfs_tree_mod_log_insert_key(parent, slot,
                                                    BTRFS_MOD_LOG_KEY_REMOVE);
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_abort_transaction(trans, ret);
                        return ret;
                }
index 81577a0c601f583aa5044421aff0bac32efdeb54..41e37f7f67cc01c5d10382f1cc26ff4b9967f628 100644 (file)
@@ -1038,7 +1038,7 @@ static int __btrfs_update_delayed_inode(struct btrfs_trans_handle *trans,
                 * transaction, because we could leave the inode with the
                 * improper counts behind.
                 */
-               if (ret != -ENOENT)
+               if (unlikely(ret != -ENOENT))
                        btrfs_abort_transaction(trans, ret);
                goto out;
        }
@@ -1066,7 +1066,7 @@ static int __btrfs_update_delayed_inode(struct btrfs_trans_handle *trans,
 
                btrfs_release_path(path);
                ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_abort_transaction(trans, ret);
                        goto err_out;
                }
@@ -1175,7 +1175,7 @@ static int __btrfs_run_delayed_items(struct btrfs_trans_handle *trans, int nr)
        while (curr_node && (!count || nr--)) {
                ret = __btrfs_commit_inode_delayed_items(trans, path,
                                                         curr_node);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        break;
                }
index 6a258bd8693e021e44a92728128b2afe1952e62e..dc4ca98c37800a7c6920c3cd05b35c26fb50e78d 100644 (file)
@@ -2157,7 +2157,7 @@ again:
        delayed_refs->run_delayed_start = find_middle(&delayed_refs->root);
 #endif
        ret = __btrfs_run_delayed_refs(trans, min_bytes);
-       if (ret < 0) {
+       if (unlikely(ret < 0)) {
                btrfs_abort_transaction(trans, ret);
                return ret;
        }
@@ -2982,26 +2982,26 @@ static int do_free_extent_accounting(struct btrfs_trans_handle *trans,
 
                csum_root = btrfs_csum_root(trans->fs_info, bytenr);
                ret = btrfs_del_csums(trans, csum_root, bytenr, num_bytes);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        return ret;
                }
 
                ret = btrfs_delete_raid_extent(trans, bytenr, num_bytes);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        return ret;
                }
        }
 
        ret = btrfs_record_squota_delta(trans->fs_info, delta);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                return ret;
        }
 
        ret = btrfs_add_to_free_space_tree(trans, bytenr, num_bytes);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                return ret;
        }
@@ -3115,7 +3115,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
 
        is_data = owner_objectid >= BTRFS_FIRST_FREE_OBJECTID;
 
-       if (!is_data && refs_to_drop != 1) {
+       if (unlikely(!is_data && refs_to_drop != 1)) {
                btrfs_crit(info,
 "invalid refs_to_drop, dropping more than 1 refs for tree block %llu refs_to_drop %u",
                           node->bytenr, refs_to_drop);
@@ -3172,7 +3172,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
                        /* Must be SHARED_* item, remove the backref first */
                        ret = remove_extent_backref(trans, extent_root, path,
                                                    NULL, refs_to_drop, is_data);
-                       if (ret) {
+                       if (unlikely(ret)) {
                                btrfs_abort_transaction(trans, ret);
                                goto out;
                        }
@@ -3221,7 +3221,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
                        "umm, got %d back from search, was looking for %llu, slot %d",
                                          ret, bytenr, path->slots[0]);
                        }
-                       if (ret < 0) {
+                       if (unlikely(ret < 0)) {
                                btrfs_abort_transaction(trans, ret);
                                goto out;
                        }
@@ -3298,7 +3298,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
                if (found_extent) {
                        ret = remove_extent_backref(trans, extent_root, path,
                                                    iref, refs_to_drop, is_data);
-                       if (ret) {
+                       if (unlikely(ret)) {
                                btrfs_abort_transaction(trans, ret);
                                goto out;
                        }
@@ -3363,7 +3363,7 @@ static int __btrfs_free_extent(struct btrfs_trans_handle *trans,
 
                ret = btrfs_del_items(trans, extent_root, path, path->slots[0],
                                      num_to_del);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
@@ -5472,17 +5472,17 @@ static noinline int walk_down_proc(struct btrfs_trans_handle *trans,
        if (!(wc->flags[level] & flag)) {
                ASSERT(path->locks[level]);
                ret = btrfs_inc_ref(trans, root, eb, 1);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        return ret;
                }
                ret = btrfs_dec_ref(trans, root, eb, 0);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        return ret;
                }
                ret = btrfs_set_disk_extent_flags(trans, eb, flag);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        return ret;
                }
@@ -5885,7 +5885,7 @@ static noinline int walk_up_proc(struct btrfs_trans_handle *trans,
                                }
                        } else {
                                ret = btrfs_dec_ref(trans, root, eb, 0);
-                               if (ret) {
+                               if (unlikely(ret)) {
                                        btrfs_abort_transaction(trans, ret);
                                        return ret;
                                }
@@ -6180,13 +6180,13 @@ int btrfs_drop_snapshot(struct btrfs_root *root, bool update_ref, bool for_reloc
        while (1) {
 
                ret = walk_down_tree(trans, root, path, wc);
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_abort_transaction(trans, ret);
                        break;
                }
 
                ret = walk_up_tree(trans, root, path, wc, BTRFS_MAX_LEVEL);
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_abort_transaction(trans, ret);
                        break;
                }
@@ -6213,7 +6213,7 @@ int btrfs_drop_snapshot(struct btrfs_root *root, bool update_ref, bool for_reloc
                        ret = btrfs_update_root(trans, tree_root,
                                                &root->root_key,
                                                root_item);
-                       if (ret) {
+                       if (unlikely(ret)) {
                                btrfs_abort_transaction(trans, ret);
                                goto out_end_trans;
                        }
@@ -6249,7 +6249,7 @@ int btrfs_drop_snapshot(struct btrfs_root *root, bool update_ref, bool for_reloc
                goto out_end_trans;
 
        ret = btrfs_del_root(trans, &root->root_key);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out_end_trans;
        }
@@ -6257,7 +6257,7 @@ int btrfs_drop_snapshot(struct btrfs_root *root, bool update_ref, bool for_reloc
        if (!is_reloc_root) {
                ret = btrfs_find_root(tree_root, &root->root_key, path,
                                      NULL, NULL);
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out_end_trans;
                } else if (ret > 0) {
index 7906aea75ee46ee348cb23140b7b03a96e63df47..a42e6d54e7cd74a3926d90315bc1c654d73ab4ce 100644 (file)
@@ -1011,7 +1011,7 @@ int btrfs_del_csums(struct btrfs_trans_handle *trans,
                         * item changed size or key
                         */
                        ret = btrfs_split_item(trans, root, path, &key, offset);
-                       if (ret && ret != -EAGAIN) {
+                       if (unlikely(ret && ret != -EAGAIN)) {
                                btrfs_abort_transaction(trans, ret);
                                break;
                        }
index e7765578349b6d07610da317c17098e97ecba7b4..7efd1f8a19121f4f42f79b25158107e1423b9f1d 100644 (file)
@@ -327,7 +327,7 @@ next_slot:
                                                    args->start - extent_offset,
                                                    0, false);
                                ret = btrfs_inc_extent_ref(trans, &ref);
-                               if (ret) {
+                               if (unlikely(ret)) {
                                        btrfs_abort_transaction(trans, ret);
                                        break;
                                }
@@ -426,7 +426,7 @@ delete_extent_item:
                                                    key.offset - extent_offset,
                                                    0, false);
                                ret = btrfs_free_extent(trans, &ref);
-                               if (ret) {
+                               if (unlikely(ret)) {
                                        btrfs_abort_transaction(trans, ret);
                                        break;
                                }
@@ -443,7 +443,7 @@ delete_extent_item:
 
                        ret = btrfs_del_items(trans, root, path, del_slot,
                                              del_nr);
-                       if (ret) {
+                       if (unlikely(ret)) {
                                btrfs_abort_transaction(trans, ret);
                                break;
                        }
@@ -587,21 +587,20 @@ again:
 
        leaf = path->nodes[0];
        btrfs_item_key_to_cpu(leaf, &key, path->slots[0]);
-       if (key.objectid != ino ||
-           key.type != BTRFS_EXTENT_DATA_KEY) {
+       if (unlikely(key.objectid != ino || key.type != BTRFS_EXTENT_DATA_KEY)) {
                ret = -EINVAL;
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
        fi = btrfs_item_ptr(leaf, path->slots[0],
                            struct btrfs_file_extent_item);
-       if (btrfs_file_extent_type(leaf, fi) != BTRFS_FILE_EXTENT_PREALLOC) {
+       if (unlikely(btrfs_file_extent_type(leaf, fi) != BTRFS_FILE_EXTENT_PREALLOC)) {
                ret = -EINVAL;
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
        extent_end = key.offset + btrfs_file_extent_num_bytes(leaf, fi);
-       if (key.offset > start || extent_end < end) {
+       if (unlikely(key.offset > start || extent_end < end)) {
                ret = -EINVAL;
                btrfs_abort_transaction(trans, ret);
                goto out;
@@ -676,7 +675,7 @@ again:
                        btrfs_release_path(path);
                        goto again;
                }
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
@@ -704,7 +703,7 @@ again:
                ref.ref_root = btrfs_root_id(root);
                btrfs_init_data_ref(&ref, ino, orig_offset, 0, false);
                ret = btrfs_inc_extent_ref(trans, &ref);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
@@ -712,7 +711,7 @@ again:
                if (split == start) {
                        key.offset = start;
                } else {
-                       if (start != key.offset) {
+                       if (unlikely(start != key.offset)) {
                                ret = -EINVAL;
                                btrfs_abort_transaction(trans, ret);
                                goto out;
@@ -744,7 +743,7 @@ again:
                del_slot = path->slots[0] + 1;
                del_nr++;
                ret = btrfs_free_extent(trans, &ref);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
@@ -762,7 +761,7 @@ again:
                del_slot = path->slots[0];
                del_nr++;
                ret = btrfs_free_extent(trans, &ref);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
@@ -783,7 +782,7 @@ again:
                                                extent_end - key.offset);
 
                ret = btrfs_del_items(trans, root, path, del_slot, del_nr);
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
@@ -2460,9 +2459,9 @@ int btrfs_replace_file_extents(struct btrfs_inode *inode,
                         * got EOPNOTSUPP via prealloc then we messed up and
                         * need to abort.
                         */
-                       if (ret &&
-                           (ret != -EOPNOTSUPP ||
-                            (extent_info && extent_info->is_new_extent)))
+                       if (unlikely(ret &&
+                                    (ret != -EOPNOTSUPP ||
+                                     (extent_info && extent_info->is_new_extent))))
                                btrfs_abort_transaction(trans, ret);
                        break;
                }
@@ -2473,7 +2472,7 @@ int btrfs_replace_file_extents(struct btrfs_inode *inode,
                    cur_offset < ino_size) {
                        ret = fill_holes(trans, inode, path, cur_offset,
                                         drop_args.drop_end);
-                       if (ret) {
+                       if (unlikely(ret)) {
                                /*
                                 * If we failed then we didn't insert our hole
                                 * entries for the area we dropped, so now the
@@ -2493,7 +2492,7 @@ int btrfs_replace_file_extents(struct btrfs_inode *inode,
                        ret = btrfs_inode_clear_file_extent_range(inode,
                                        cur_offset,
                                        drop_args.drop_end - cur_offset);
-                       if (ret) {
+                       if (unlikely(ret)) {
                                /*
                                 * We couldn't clear our area, so we could
                                 * presumably adjust up and corrupt the fs, so
@@ -2512,7 +2511,7 @@ int btrfs_replace_file_extents(struct btrfs_inode *inode,
                        ret = btrfs_insert_replace_extent(trans, inode, path,
                                        extent_info, replace_len,
                                        drop_args.bytes_found);
-                       if (ret) {
+                       if (unlikely(ret)) {
                                btrfs_abort_transaction(trans, ret);
                                break;
                        }
@@ -2607,7 +2606,7 @@ int btrfs_replace_file_extents(struct btrfs_inode *inode,
            cur_offset < drop_args.drop_end) {
                ret = fill_holes(trans, inode, path, cur_offset,
                                 drop_args.drop_end);
-               if (ret) {
+               if (unlikely(ret)) {
                        /* Same comment as above. */
                        btrfs_abort_transaction(trans, ret);
                        goto out_trans;
@@ -2616,7 +2615,7 @@ int btrfs_replace_file_extents(struct btrfs_inode *inode,
                /* See the comment in the loop above for the reasoning here. */
                ret = btrfs_inode_clear_file_extent_range(inode, cur_offset,
                                        drop_args.drop_end - cur_offset);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out_trans;
                }
@@ -2626,7 +2625,7 @@ int btrfs_replace_file_extents(struct btrfs_inode *inode,
                ret = btrfs_insert_replace_extent(trans, inode, path,
                                extent_info, extent_info->data_len,
                                drop_args.bytes_found);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out_trans;
                }
index c2730740d9282150a57b25494e28a43c9efaf721..ab873bd6719209c4978ec534e41f6c4820900b3d 100644 (file)
@@ -4142,7 +4142,7 @@ int btrfs_set_free_space_cache_v1_active(struct btrfs_fs_info *fs_info, bool act
        if (!active) {
                set_bit(BTRFS_FS_CLEANUP_SPACE_CACHE_V1, &fs_info->flags);
                ret = cleanup_free_space_cache_v1(fs_info, trans);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        btrfs_end_transaction(trans);
                        goto out;
index 2fee9f3b60d4394a0b981df5a7b6e199c7020db7..dad0b492a66351232771385a3e21d3cbc70a11a7 100644 (file)
@@ -218,7 +218,7 @@ int btrfs_convert_free_space_to_bitmaps(struct btrfs_trans_handle *trans,
 
        bitmap_size = free_space_bitmap_size(fs_info, block_group->length);
        bitmap = alloc_bitmap(bitmap_size);
-       if (!bitmap) {
+       if (unlikely(!bitmap)) {
                ret = -ENOMEM;
                btrfs_abort_transaction(trans, ret);
                goto out;
@@ -233,7 +233,7 @@ int btrfs_convert_free_space_to_bitmaps(struct btrfs_trans_handle *trans,
 
        while (!done) {
                ret = btrfs_search_prev_slot(trans, root, &key, path, -1, 1);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
@@ -271,7 +271,7 @@ int btrfs_convert_free_space_to_bitmaps(struct btrfs_trans_handle *trans,
                }
 
                ret = btrfs_del_items(trans, root, path, path->slots[0], nr);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
@@ -320,7 +320,7 @@ int btrfs_convert_free_space_to_bitmaps(struct btrfs_trans_handle *trans,
 
                ret = btrfs_insert_empty_item(trans, root, path, &key,
                                              data_size);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
@@ -361,7 +361,7 @@ int btrfs_convert_free_space_to_extents(struct btrfs_trans_handle *trans,
 
        bitmap_size = free_space_bitmap_size(fs_info, block_group->length);
        bitmap = alloc_bitmap(bitmap_size);
-       if (!bitmap) {
+       if (unlikely(!bitmap)) {
                ret = -ENOMEM;
                btrfs_abort_transaction(trans, ret);
                goto out;
@@ -376,7 +376,7 @@ int btrfs_convert_free_space_to_extents(struct btrfs_trans_handle *trans,
 
        while (!done) {
                ret = btrfs_search_prev_slot(trans, root, &key, path, -1, 1);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
@@ -420,7 +420,7 @@ int btrfs_convert_free_space_to_extents(struct btrfs_trans_handle *trans,
                }
 
                ret = btrfs_del_items(trans, root, path, path->slots[0], nr);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
@@ -454,7 +454,7 @@ int btrfs_convert_free_space_to_extents(struct btrfs_trans_handle *trans,
                key.offset = (end_bit - start_bit) * fs_info->sectorsize;
 
                ret = btrfs_insert_empty_item(trans, root, path, &key, 0);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
@@ -848,14 +848,14 @@ int btrfs_remove_from_free_space_tree(struct btrfs_trans_handle *trans,
                return 0;
 
        path = btrfs_alloc_path();
-       if (!path) {
+       if (unlikely(!path)) {
                ret = -ENOMEM;
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
 
        block_group = btrfs_lookup_block_group(trans->fs_info, start);
-       if (!block_group) {
+       if (unlikely(!block_group)) {
                DEBUG_WARN("no block group found for start=%llu", start);
                ret = -ENOENT;
                btrfs_abort_transaction(trans, ret);
@@ -1030,14 +1030,14 @@ int btrfs_add_to_free_space_tree(struct btrfs_trans_handle *trans,
                return 0;
 
        path = btrfs_alloc_path();
-       if (!path) {
+       if (unlikely(!path)) {
                ret = -ENOMEM;
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
 
        block_group = btrfs_lookup_block_group(trans->fs_info, start);
-       if (!block_group) {
+       if (unlikely(!block_group)) {
                DEBUG_WARN("no block group found for start=%llu", start);
                ret = -ENOENT;
                btrfs_abort_transaction(trans, ret);
@@ -1185,7 +1185,7 @@ int btrfs_create_free_space_tree(struct btrfs_fs_info *fs_info)
                goto out_clear;
        }
        ret = btrfs_global_root_insert(free_space_root);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_put_root(free_space_root);
                btrfs_abort_transaction(trans, ret);
                btrfs_end_transaction(trans);
@@ -1197,7 +1197,7 @@ int btrfs_create_free_space_tree(struct btrfs_fs_info *fs_info)
                block_group = rb_entry(node, struct btrfs_block_group,
                                       cache_node);
                ret = populate_free_space_tree(trans, block_group);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        btrfs_end_transaction(trans);
                        goto out_clear;
@@ -1290,14 +1290,14 @@ int btrfs_delete_free_space_tree(struct btrfs_fs_info *fs_info)
        btrfs_clear_fs_compat_ro(fs_info, FREE_SPACE_TREE_VALID);
 
        ret = clear_free_space_tree(trans, free_space_root);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                btrfs_end_transaction(trans);
                return ret;
        }
 
        ret = btrfs_del_root(trans, &free_space_root->root_key);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                btrfs_end_transaction(trans);
                return ret;
@@ -1315,7 +1315,7 @@ int btrfs_delete_free_space_tree(struct btrfs_fs_info *fs_info)
        ret = btrfs_free_tree_block(trans, btrfs_root_id(free_space_root),
                                    free_space_root->node, 0, 1);
        btrfs_put_root(free_space_root);
-       if (ret < 0) {
+       if (unlikely(ret < 0)) {
                btrfs_abort_transaction(trans, ret);
                btrfs_end_transaction(trans);
                return ret;
@@ -1344,7 +1344,7 @@ int btrfs_rebuild_free_space_tree(struct btrfs_fs_info *fs_info)
        set_bit(BTRFS_FS_FREE_SPACE_TREE_UNTRUSTED, &fs_info->flags);
 
        ret = clear_free_space_tree(trans, free_space_root);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                btrfs_end_transaction(trans);
                return ret;
@@ -1362,7 +1362,7 @@ int btrfs_rebuild_free_space_tree(struct btrfs_fs_info *fs_info)
                        goto next;
 
                ret = populate_free_space_tree(trans, block_group);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        btrfs_end_transaction(trans);
                        return ret;
@@ -1422,7 +1422,7 @@ static int __add_block_group_free_space(struct btrfs_trans_handle *trans,
 
        if (!path) {
                path = btrfs_alloc_path();
-               if (!path) {
+               if (unlikely(!path)) {
                        btrfs_abort_transaction(trans, -ENOMEM);
                        return -ENOMEM;
                }
@@ -1430,7 +1430,7 @@ static int __add_block_group_free_space(struct btrfs_trans_handle *trans,
        }
 
        ret = add_new_free_space_info(trans, block_group, path);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
@@ -1481,7 +1481,7 @@ int btrfs_remove_block_group_free_space(struct btrfs_trans_handle *trans,
        }
 
        path = btrfs_alloc_path();
-       if (!path) {
+       if (unlikely(!path)) {
                ret = -ENOMEM;
                btrfs_abort_transaction(trans, ret);
                goto out;
@@ -1496,7 +1496,7 @@ int btrfs_remove_block_group_free_space(struct btrfs_trans_handle *trans,
 
        while (!done) {
                ret = btrfs_search_prev_slot(trans, root, &key, path, -1, 1);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
@@ -1527,7 +1527,7 @@ int btrfs_remove_block_group_free_space(struct btrfs_trans_handle *trans,
                }
 
                ret = btrfs_del_items(trans, root, path, path->slots[0], nr);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
index f06cf701ae5ae0c33a34097ce7239a8777b9d3dd..1bd73b80f9fac89a0f52dd8c9fa8dce12a98a5a6 100644 (file)
@@ -137,7 +137,7 @@ static int btrfs_del_inode_extref(struct btrfs_trans_handle *trans,
         */
        extref = btrfs_find_name_in_ext_backref(path->nodes[0], path->slots[0],
                                                ref_objectid, name);
-       if (!extref) {
+       if (unlikely(!extref)) {
                btrfs_abort_transaction(trans, -ENOENT);
                return -ENOENT;
        }
@@ -627,7 +627,7 @@ delete:
                if (control->clear_extent_range) {
                        ret = btrfs_inode_clear_file_extent_range(control->inode,
                                                  clear_start, clear_len);
-                       if (ret) {
+                       if (unlikely(ret)) {
                                btrfs_abort_transaction(trans, ret);
                                break;
                        }
@@ -666,7 +666,7 @@ delete:
                        btrfs_init_data_ref(&ref, control->ino, extent_offset,
                                            btrfs_root_id(root), false);
                        ret = btrfs_free_extent(trans, &ref);
-                       if (ret) {
+                       if (unlikely(ret)) {
                                btrfs_abort_transaction(trans, ret);
                                break;
                        }
@@ -684,7 +684,7 @@ delete:
                                ret = btrfs_del_items(trans, root, path,
                                                pending_del_slot,
                                                pending_del_nr);
-                               if (ret) {
+                               if (unlikely(ret)) {
                                        btrfs_abort_transaction(trans, ret);
                                        break;
                                }
@@ -720,7 +720,7 @@ out:
                int ret2;
 
                ret2 = btrfs_del_items(trans, root, path, pending_del_slot, pending_del_nr);
-               if (ret2) {
+               if (unlikely(ret2)) {
                        btrfs_abort_transaction(trans, ret2);
                        ret = ret2;
                }
index 6403312505c4d1ac1fea61da89cf6012fb756661..02cb081697fea496af6230c1bcb0868523c88428 100644 (file)
@@ -634,7 +634,7 @@ static noinline int __cow_file_range_inline(struct btrfs_inode *inode,
        drop_args.replace_extent = true;
        drop_args.extent_item_size = btrfs_file_extent_calc_inline_size(data_len);
        ret = btrfs_drop_extents(trans, root, inode, &drop_args);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
@@ -642,7 +642,7 @@ static noinline int __cow_file_range_inline(struct btrfs_inode *inode,
        ret = insert_inline_extent(trans, path, inode, drop_args.extent_inserted,
                                   size, compressed_size, compress_type,
                                   compressed_folio, update_i_size);
-       if (ret && ret != -ENOSPC) {
+       if (unlikely(ret && ret != -ENOSPC)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        } else if (ret == -ENOSPC) {
@@ -652,7 +652,7 @@ static noinline int __cow_file_range_inline(struct btrfs_inode *inode,
 
        btrfs_update_inode_bytes(inode, size, drop_args.bytes_found);
        ret = btrfs_update_inode(trans, inode);
-       if (ret && ret != -ENOSPC) {
+       if (unlikely(ret && ret != -ENOSPC)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        } else if (ret == -ENOSPC) {
@@ -3150,7 +3150,7 @@ int btrfs_finish_one_ordered(struct btrfs_ordered_extent *ordered_extent)
        trans->block_rsv = &inode->block_rsv;
 
        ret = btrfs_insert_raid_extent(trans, ordered_extent);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
@@ -3158,7 +3158,7 @@ int btrfs_finish_one_ordered(struct btrfs_ordered_extent *ordered_extent)
        if (test_bit(BTRFS_ORDERED_NOCOW, &ordered_extent->flags)) {
                /* Logic error */
                ASSERT(list_empty(&ordered_extent->list));
-               if (!list_empty(&ordered_extent->list)) {
+               if (unlikely(!list_empty(&ordered_extent->list))) {
                        ret = -EINVAL;
                        btrfs_abort_transaction(trans, ret);
                        goto out;
@@ -3166,7 +3166,7 @@ int btrfs_finish_one_ordered(struct btrfs_ordered_extent *ordered_extent)
 
                btrfs_inode_safe_disk_i_size_write(inode, 0);
                ret = btrfs_update_inode_fallback(trans, inode);
-               if (ret) {
+               if (unlikely(ret)) {
                        /* -ENOMEM or corruption */
                        btrfs_abort_transaction(trans, ret);
                }
@@ -3193,20 +3193,20 @@ int btrfs_finish_one_ordered(struct btrfs_ordered_extent *ordered_extent)
                                                ordered_extent->disk_num_bytes);
                }
        }
-       if (ret < 0) {
+       if (unlikely(ret < 0)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
 
        ret = btrfs_unpin_extent_cache(inode, ordered_extent->file_offset,
                                       ordered_extent->num_bytes, trans->transid);
-       if (ret < 0) {
+       if (unlikely(ret < 0)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
 
        ret = add_pending_csums(trans, &ordered_extent->list);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
@@ -3224,7 +3224,7 @@ int btrfs_finish_one_ordered(struct btrfs_ordered_extent *ordered_extent)
 
        btrfs_inode_safe_disk_i_size_write(inode, 0);
        ret = btrfs_update_inode_fallback(trans, inode);
-       if (ret) { /* -ENOMEM or corruption */
+       if (unlikely(ret)) { /* -ENOMEM or corruption */
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
@@ -3539,7 +3539,7 @@ int btrfs_orphan_add(struct btrfs_trans_handle *trans,
        int ret;
 
        ret = btrfs_insert_orphan_item(trans, inode->root, btrfs_ino(inode));
-       if (ret && ret != -EEXIST) {
+       if (unlikely(ret && ret != -EEXIST)) {
                btrfs_abort_transaction(trans, ret);
                return ret;
        }
@@ -4288,7 +4288,7 @@ static int __btrfs_unlink_inode(struct btrfs_trans_handle *trans,
        }
 
        ret = btrfs_del_inode_ref(trans, root, name, ino, dir_ino, &index);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_crit(fs_info,
           "failed to delete reference to %.*s, root %llu inode %llu parent %llu",
                           name->len, name->name, btrfs_root_id(root), ino, dir_ino);
@@ -4300,7 +4300,7 @@ skip_backref:
                rename_ctx->index = index;
 
        ret = btrfs_delete_delayed_dir_index(trans, dir, index);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                return ret;
        }
@@ -4455,7 +4455,7 @@ static int btrfs_unlink_subvol(struct btrfs_trans_handle *trans,
        btrfs_dir_item_key_to_cpu(leaf, di, &key);
        WARN_ON(key.type != BTRFS_ROOT_ITEM_KEY || key.objectid != objectid);
        ret = btrfs_delete_one_dir_name(trans, root, path, di);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
@@ -4486,14 +4486,14 @@ static int btrfs_unlink_subvol(struct btrfs_trans_handle *trans,
                ret = btrfs_del_root_ref(trans, objectid,
                                         btrfs_root_id(root), dir_ino,
                                         &index, &fname.disk_name);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
        }
 
        ret = btrfs_delete_delayed_dir_index(trans, dir, index);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
@@ -4665,13 +4665,13 @@ int btrfs_delete_subvolume(struct btrfs_inode *dir, struct dentry *dentry)
        btrfs_record_snapshot_destroy(trans, dir);
 
        ret = btrfs_unlink_subvol(trans, dir, dentry);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out_end_trans;
        }
 
        ret = btrfs_record_root_in_trans(trans, dest);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out_end_trans;
        }
@@ -4685,7 +4685,7 @@ int btrfs_delete_subvolume(struct btrfs_inode *dir, struct dentry *dentry)
                ret = btrfs_insert_orphan_item(trans,
                                        fs_info->tree_root,
                                        btrfs_root_id(dest));
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out_end_trans;
                }
@@ -4693,7 +4693,7 @@ int btrfs_delete_subvolume(struct btrfs_inode *dir, struct dentry *dentry)
 
        ret = btrfs_uuid_tree_remove(trans, dest->root_item.uuid,
                                     BTRFS_UUID_KEY_SUBVOL, btrfs_root_id(dest));
-       if (ret && ret != -ENOENT) {
+       if (unlikely(ret && ret != -ENOENT)) {
                btrfs_abort_transaction(trans, ret);
                goto out_end_trans;
        }
@@ -4702,7 +4702,7 @@ int btrfs_delete_subvolume(struct btrfs_inode *dir, struct dentry *dentry)
                                          dest->root_item.received_uuid,
                                          BTRFS_UUID_KEY_RECEIVED_SUBVOL,
                                          btrfs_root_id(dest));
-               if (ret && ret != -ENOENT) {
+               if (unlikely(ret && ret != -ENOENT)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out_end_trans;
                }
@@ -5106,7 +5106,7 @@ static int maybe_insert_hole(struct btrfs_inode *inode, u64 offset, u64 len)
        drop_args.drop_cache = true;
 
        ret = btrfs_drop_extents(trans, root, inode, &drop_args);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                btrfs_end_transaction(trans);
                return ret;
@@ -6559,7 +6559,7 @@ int btrfs_create_new_inode(struct btrfs_trans_handle *trans,
        batch.total_data_size = sizes[0] + (args->orphan ? 0 : sizes[1]);
        batch.nr = args->orphan ? 1 : 2;
        ret = btrfs_insert_empty_items(trans, root, path, &batch);
-       if (ret != 0) {
+       if (unlikely(ret != 0)) {
                btrfs_abort_transaction(trans, ret);
                goto discard;
        }
@@ -6636,7 +6636,7 @@ int btrfs_create_new_inode(struct btrfs_trans_handle *trans,
         */
        if (!args->subvol) {
                ret = btrfs_init_inode_security(trans, args);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto discard;
                }
@@ -6656,14 +6656,14 @@ int btrfs_create_new_inode(struct btrfs_trans_handle *trans,
 
        if (args->orphan) {
                ret = btrfs_orphan_add(trans, BTRFS_I(inode));
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto discard;
                }
        } else {
                ret = btrfs_add_link(trans, BTRFS_I(dir), BTRFS_I(inode), name,
                                     0, BTRFS_I(inode)->dir_index);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto discard;
                }
@@ -6727,7 +6727,7 @@ int btrfs_add_link(struct btrfs_trans_handle *trans,
                                    btrfs_inode_type(inode), index);
        if (ret == -EEXIST || ret == -EOVERFLOW)
                goto fail_dir_item;
-       else if (ret) {
+       else if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                return ret;
        }
@@ -6883,7 +6883,7 @@ static int btrfs_link(struct dentry *old_dentry, struct inode *dir,
        /* Link added now we update the inode item with the new link count. */
        inc_nlink(inode);
        ret = btrfs_update_inode(trans, BTRFS_I(inode));
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto fail;
        }
@@ -6894,7 +6894,7 @@ static int btrfs_link(struct dentry *old_dentry, struct inode *dir,
                 * open(2) O_TMPFILE flag.
                 */
                ret = btrfs_orphan_del(trans, BTRFS_I(inode));
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto fail;
                }
@@ -8208,7 +8208,7 @@ static int btrfs_rename_exchange(struct inode *old_dir,
                                             btrfs_ino(BTRFS_I(old_dir)),
                                             new_idx);
                if (ret) {
-                       if (need_abort)
+                       if (unlikely(need_abort))
                                btrfs_abort_transaction(trans, ret);
                        goto out_fail;
                }
@@ -8256,7 +8256,7 @@ static int btrfs_rename_exchange(struct inode *old_dir,
        /* src is a subvolume */
        if (old_ino == BTRFS_FIRST_FREE_OBJECTID) {
                ret = btrfs_unlink_subvol(trans, BTRFS_I(old_dir), old_dentry);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out_fail;
                }
@@ -8264,12 +8264,12 @@ static int btrfs_rename_exchange(struct inode *old_dir,
                ret = __btrfs_unlink_inode(trans, BTRFS_I(old_dir),
                                           BTRFS_I(old_dentry->d_inode),
                                           old_name, &old_rename_ctx);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out_fail;
                }
                ret = btrfs_update_inode(trans, BTRFS_I(old_inode));
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out_fail;
                }
@@ -8278,7 +8278,7 @@ static int btrfs_rename_exchange(struct inode *old_dir,
        /* dest is a subvolume */
        if (new_ino == BTRFS_FIRST_FREE_OBJECTID) {
                ret = btrfs_unlink_subvol(trans, BTRFS_I(new_dir), new_dentry);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out_fail;
                }
@@ -8286,12 +8286,12 @@ static int btrfs_rename_exchange(struct inode *old_dir,
                ret = __btrfs_unlink_inode(trans, BTRFS_I(new_dir),
                                           BTRFS_I(new_dentry->d_inode),
                                           new_name, &new_rename_ctx);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out_fail;
                }
                ret = btrfs_update_inode(trans, BTRFS_I(new_inode));
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out_fail;
                }
@@ -8299,14 +8299,14 @@ static int btrfs_rename_exchange(struct inode *old_dir,
 
        ret = btrfs_add_link(trans, BTRFS_I(new_dir), BTRFS_I(old_inode),
                             new_name, 0, old_idx);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out_fail;
        }
 
        ret = btrfs_add_link(trans, BTRFS_I(old_dir), BTRFS_I(new_inode),
                             old_name, 0, new_idx);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out_fail;
        }
@@ -8547,7 +8547,7 @@ static int btrfs_rename(struct mnt_idmap *idmap,
 
        if (unlikely(old_ino == BTRFS_FIRST_FREE_OBJECTID)) {
                ret = btrfs_unlink_subvol(trans, BTRFS_I(old_dir), old_dentry);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out_fail;
                }
@@ -8555,12 +8555,12 @@ static int btrfs_rename(struct mnt_idmap *idmap,
                ret = __btrfs_unlink_inode(trans, BTRFS_I(old_dir),
                                           BTRFS_I(d_inode(old_dentry)),
                                           &old_fname.disk_name, &rename_ctx);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out_fail;
                }
                ret = btrfs_update_inode(trans, BTRFS_I(old_inode));
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out_fail;
                }
@@ -8571,7 +8571,7 @@ static int btrfs_rename(struct mnt_idmap *idmap,
                if (unlikely(btrfs_ino(BTRFS_I(new_inode)) ==
                             BTRFS_EMPTY_SUBVOL_DIR_OBJECTID)) {
                        ret = btrfs_unlink_subvol(trans, BTRFS_I(new_dir), new_dentry);
-                       if (ret) {
+                       if (unlikely(ret)) {
                                btrfs_abort_transaction(trans, ret);
                                goto out_fail;
                        }
@@ -8580,7 +8580,7 @@ static int btrfs_rename(struct mnt_idmap *idmap,
                        ret = btrfs_unlink_inode(trans, BTRFS_I(new_dir),
                                                 BTRFS_I(d_inode(new_dentry)),
                                                 &new_fname.disk_name);
-                       if (ret) {
+                       if (unlikely(ret)) {
                                btrfs_abort_transaction(trans, ret);
                                goto out_fail;
                        }
@@ -8588,7 +8588,7 @@ static int btrfs_rename(struct mnt_idmap *idmap,
                if (new_inode->i_nlink == 0) {
                        ret = btrfs_orphan_add(trans,
                                        BTRFS_I(d_inode(new_dentry)));
-                       if (ret) {
+                       if (unlikely(ret)) {
                                btrfs_abort_transaction(trans, ret);
                                goto out_fail;
                        }
@@ -8597,7 +8597,7 @@ static int btrfs_rename(struct mnt_idmap *idmap,
 
        ret = btrfs_add_link(trans, BTRFS_I(new_dir), BTRFS_I(old_inode),
                             &new_fname.disk_name, 0, index);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out_fail;
        }
@@ -8611,7 +8611,7 @@ static int btrfs_rename(struct mnt_idmap *idmap,
 
        if (flags & RENAME_WHITEOUT) {
                ret = btrfs_create_new_inode(trans, &whiteout_args);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out_fail;
                } else {
@@ -8905,7 +8905,7 @@ static int btrfs_symlink(struct mnt_idmap *idmap, struct inode *dir,
                goto out;
 
        path = btrfs_alloc_path();
-       if (!path) {
+       if (unlikely(!path)) {
                ret = -ENOMEM;
                btrfs_abort_transaction(trans, ret);
                discard_new_inode(inode);
@@ -8917,7 +8917,7 @@ static int btrfs_symlink(struct mnt_idmap *idmap, struct inode *dir,
        key.offset = 0;
        datasize = btrfs_file_extent_calc_inline_size(name_len);
        ret = btrfs_insert_empty_item(trans, root, path, &key, datasize);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                btrfs_free_path(path);
                discard_new_inode(inode);
@@ -9130,7 +9130,7 @@ next:
 
                ret = btrfs_update_inode(trans, BTRFS_I(inode));
 
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        if (own_trans)
                                btrfs_end_transaction(trans);
index 7f347baa13df1c66c7b9cfd66fa643b17888a0fe..a454b5ba209750c89e1b8c743a10e771d78bc8a8 100644 (file)
@@ -376,13 +376,13 @@ int btrfs_fileattr_set(struct mnt_idmap *idmap,
        if (comp) {
                ret = btrfs_set_prop(trans, inode, "btrfs.compression",
                                     comp, strlen(comp), 0);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out_end_trans;
                }
        } else {
                ret = btrfs_set_prop(trans, inode, "btrfs.compression", NULL, 0, 0);
-               if (ret && ret != -ENODATA) {
+               if (unlikely(ret && ret != -ENODATA)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out_end_trans;
                }
@@ -633,7 +633,7 @@ static noinline int create_subvol(struct mnt_idmap *idmap,
                btrfs_clear_buffer_dirty(trans, leaf);
                btrfs_tree_unlock(leaf);
                ret2 = btrfs_free_tree_block(trans, objectid, leaf, 0, 1);
-               if (ret2 < 0)
+               if (unlikely(ret2 < 0))
                        btrfs_abort_transaction(trans, ret2);
                free_extent_buffer(leaf);
                goto out;
@@ -654,14 +654,14 @@ static noinline int create_subvol(struct mnt_idmap *idmap,
        /* ... and new_root is owned by new_inode_args.inode now. */
 
        ret = btrfs_record_root_in_trans(trans, new_root);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
 
        ret = btrfs_uuid_tree_add(trans, root_item->uuid,
                                  BTRFS_UUID_KEY_SUBVOL, objectid);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
@@ -669,7 +669,7 @@ static noinline int create_subvol(struct mnt_idmap *idmap,
        btrfs_record_new_subvolume(trans, BTRFS_I(dir));
 
        ret = btrfs_create_new_inode(trans, &new_inode_args);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
@@ -4008,7 +4008,7 @@ static long _btrfs_ioctl_set_received_subvol(struct file *file,
                ret = btrfs_uuid_tree_remove(trans, root_item->received_uuid,
                                          BTRFS_UUID_KEY_RECEIVED_SUBVOL,
                                          btrfs_root_id(root));
-               if (ret && ret != -ENOENT) {
+               if (unlikely(ret && ret != -ENOENT)) {
                        btrfs_abort_transaction(trans, ret);
                        btrfs_end_transaction(trans);
                        goto out;
@@ -4032,7 +4032,7 @@ static long _btrfs_ioctl_set_received_subvol(struct file *file,
                ret = btrfs_uuid_tree_add(trans, sa->uuid,
                                          BTRFS_UUID_KEY_RECEIVED_SUBVOL,
                                          btrfs_root_id(root));
-               if (ret < 0 && ret != -EEXIST) {
+               if (unlikely(ret < 0 && ret != -EEXIST)) {
                        btrfs_abort_transaction(trans, ret);
                        btrfs_end_transaction(trans);
                        goto out;
index 4c6097b7e56afbc81350455494c49fe4272bbde2..1175b8192cd7de80976158b481d4fbbc420b7cca 100644 (file)
@@ -1069,7 +1069,7 @@ int btrfs_quota_enable(struct btrfs_fs_info *fs_info,
        }
 
        path = btrfs_alloc_path();
-       if (!path) {
+       if (unlikely(!path)) {
                ret = -ENOMEM;
                btrfs_abort_transaction(trans, ret);
                goto out_free_root;
@@ -1081,7 +1081,7 @@ int btrfs_quota_enable(struct btrfs_fs_info *fs_info,
 
        ret = btrfs_insert_empty_item(trans, quota_root, path, &key,
                                      sizeof(*ptr));
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out_free_path;
        }
@@ -1111,7 +1111,7 @@ int btrfs_quota_enable(struct btrfs_fs_info *fs_info,
        ret = btrfs_search_slot_for_read(tree_root, &key, path, 1, 0);
        if (ret > 0)
                goto out_add_root;
-       if (ret < 0) {
+       if (unlikely(ret < 0)) {
                btrfs_abort_transaction(trans, ret);
                goto out_free_path;
        }
@@ -1129,7 +1129,7 @@ int btrfs_quota_enable(struct btrfs_fs_info *fs_info,
                        /* We should not have a stray @prealloc pointer. */
                        ASSERT(prealloc == NULL);
                        prealloc = kzalloc(sizeof(*prealloc), GFP_NOFS);
-                       if (!prealloc) {
+                       if (unlikely(!prealloc)) {
                                ret = -ENOMEM;
                                btrfs_abort_transaction(trans, ret);
                                goto out_free_path;
@@ -1137,7 +1137,7 @@ int btrfs_quota_enable(struct btrfs_fs_info *fs_info,
 
                        ret = add_qgroup_item(trans, quota_root,
                                              found_key.offset);
-                       if (ret) {
+                       if (unlikely(ret)) {
                                btrfs_abort_transaction(trans, ret);
                                goto out_free_path;
                        }
@@ -1145,13 +1145,13 @@ int btrfs_quota_enable(struct btrfs_fs_info *fs_info,
                        qgroup = add_qgroup_rb(fs_info, prealloc, found_key.offset);
                        prealloc = NULL;
                        ret = btrfs_sysfs_add_one_qgroup(fs_info, qgroup);
-                       if (ret < 0) {
+                       if (unlikely(ret < 0)) {
                                btrfs_abort_transaction(trans, ret);
                                goto out_free_path;
                        }
                        ret = btrfs_search_slot_for_read(tree_root, &found_key,
                                                         path, 1, 0);
-                       if (ret < 0) {
+                       if (unlikely(ret < 0)) {
                                btrfs_abort_transaction(trans, ret);
                                goto out_free_path;
                        }
@@ -1165,7 +1165,7 @@ int btrfs_quota_enable(struct btrfs_fs_info *fs_info,
                        }
                }
                ret = btrfs_next_item(tree_root, path);
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out_free_path;
                }
@@ -1176,7 +1176,7 @@ int btrfs_quota_enable(struct btrfs_fs_info *fs_info,
 out_add_root:
        btrfs_release_path(path);
        ret = add_qgroup_item(trans, quota_root, BTRFS_FS_TREE_OBJECTID);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out_free_path;
        }
@@ -1190,7 +1190,7 @@ out_add_root:
        qgroup = add_qgroup_rb(fs_info, prealloc, BTRFS_FS_TREE_OBJECTID);
        prealloc = NULL;
        ret = btrfs_sysfs_add_one_qgroup(fs_info, qgroup);
-       if (ret < 0) {
+       if (unlikely(ret < 0)) {
                btrfs_abort_transaction(trans, ret);
                goto out_free_path;
        }
@@ -1376,13 +1376,13 @@ int btrfs_quota_disable(struct btrfs_fs_info *fs_info)
        btrfs_free_qgroup_config(fs_info);
 
        ret = btrfs_clean_quota_tree(trans, quota_root);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
 
        ret = btrfs_del_root(trans, &quota_root->root_key);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
index a69eaf0cef47d906a26fd73fe5f513d8bc7997ba..cc6f6095cc9fd05893aa7fd783fccb36168d0b6d 100644 (file)
@@ -304,7 +304,7 @@ int btrfs_insert_one_raid_extent(struct btrfs_trans_handle *trans,
        int ret;
 
        stripe_extent = kzalloc(item_size, GFP_NOFS);
-       if (!stripe_extent) {
+       if (!unlikely(stripe_extent)) {
                btrfs_abort_transaction(trans, -ENOMEM);
                btrfs_end_transaction(trans);
                return -ENOMEM;
index f78ac494197f0eec90999471b296836878e3f5e8..5465a5eae9b2d15bab14484ab994bc293231c544 100644 (file)
@@ -43,7 +43,7 @@ static int clone_finish_inode_update(struct btrfs_trans_handle *trans,
        }
 
        ret = btrfs_update_inode(trans, BTRFS_I(inode));
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                btrfs_end_transaction(trans);
                return ret;
@@ -268,12 +268,12 @@ copy_inline_extent:
        drop_args.end = aligned_end;
        drop_args.drop_cache = true;
        ret = btrfs_drop_extents(trans, root, inode, &drop_args);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
        ret = btrfs_insert_empty_item(trans, root, path, new_key, size);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
@@ -285,7 +285,7 @@ copy_inline_extent:
        btrfs_update_inode_bytes(inode, datal, drop_args.bytes_found);
        btrfs_set_inode_full_sync(inode);
        ret = btrfs_inode_set_file_extent_range(inode, 0, aligned_end);
-       if (ret)
+       if (unlikely(ret))
                btrfs_abort_transaction(trans, ret);
 out:
        if (!ret && !trans) {
index 7027572cb6c16aff4defdec0ed7985b07f6e0ddf..8dd8de6b9fb89e84e43d2a5d15e8ca6a6bfcf41f 100644 (file)
@@ -967,7 +967,7 @@ int replace_file_extents(struct btrfs_trans_handle *trans,
                btrfs_init_data_ref(&ref, key.objectid, key.offset,
                                    btrfs_root_id(root), false);
                ret = btrfs_inc_extent_ref(trans, &ref);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        break;
                }
@@ -981,7 +981,7 @@ int replace_file_extents(struct btrfs_trans_handle *trans,
                btrfs_init_data_ref(&ref, key.objectid, key.offset,
                                    btrfs_root_id(root), false);
                ret = btrfs_free_extent(trans, &ref);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        break;
                }
@@ -1192,7 +1192,7 @@ again:
                ref.ref_root = btrfs_root_id(src);
                btrfs_init_tree_ref(&ref, level - 1, 0, true);
                ret = btrfs_inc_extent_ref(trans, &ref);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        break;
                }
@@ -1205,7 +1205,7 @@ again:
                ref.ref_root = btrfs_root_id(dest);
                btrfs_init_tree_ref(&ref, level - 1, 0, true);
                ret = btrfs_inc_extent_ref(trans, &ref);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        break;
                }
@@ -1219,7 +1219,7 @@ again:
                ref.ref_root = btrfs_root_id(src);
                btrfs_init_tree_ref(&ref, level - 1, 0, true);
                ret = btrfs_free_extent(trans, &ref);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        break;
                }
@@ -1233,7 +1233,7 @@ again:
                ref.ref_root = btrfs_root_id(dest);
                btrfs_init_tree_ref(&ref, level - 1, 0, true);
                ret = btrfs_free_extent(trans, &ref);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        break;
                }
@@ -1784,7 +1784,7 @@ again:
                list_add(&reloc_root->root_list, &reloc_roots);
                btrfs_put_root(root);
 
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        if (!err)
                                err = ret;
@@ -2325,7 +2325,7 @@ static int do_relocation(struct btrfs_trans_handle *trans,
                        if (!ret)
                                ret = btrfs_drop_subtree(trans, root, eb,
                                                         upper->eb);
-                       if (ret)
+                       if (unlikely(ret))
                                btrfs_abort_transaction(trans, ret);
                }
 next:
index 8d4dd48beb3a3020583cfae784ad0de8794ff62f..d07eab70f759d990ac9e8ddbfa9aff1dabd98c01 100644 (file)
@@ -168,20 +168,20 @@ int btrfs_update_root(struct btrfs_trans_handle *trans, struct btrfs_root
                btrfs_release_path(path);
                ret = btrfs_search_slot(trans, root, key, path,
                                -1, 1);
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_abort_transaction(trans, ret);
                        return ret;
                }
 
                ret = btrfs_del_item(trans, root, path);
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_abort_transaction(trans, ret);
                        return ret;
                }
                btrfs_release_path(path);
                ret = btrfs_insert_empty_item(trans, root, path,
                                key, sizeof(*item));
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_abort_transaction(trans, ret);
                        return ret;
                }
@@ -421,7 +421,7 @@ int btrfs_add_root_ref(struct btrfs_trans_handle *trans, u64 root_id,
 again:
        ret = btrfs_insert_empty_item(trans, tree_root, path, &key,
                                      sizeof(*ref) + name->len);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                return ret;
        }
index 12558404f9276723e2b25ac4a11894709fc8ec63..23bcd3c0fc1c2824b6498dcc7060eb0e09456280 100644 (file)
@@ -1569,7 +1569,7 @@ static int qgroup_account_snapshot(struct btrfs_trans_handle *trans,
         * qgroup counters could end up wrong.
         */
        ret = btrfs_run_delayed_refs(trans, U64_MAX);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                return ret;
        }
@@ -1710,7 +1710,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
         * insert the directory item
         */
        ret = btrfs_set_inode_index(parent_inode, &index);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto fail;
        }
@@ -1731,7 +1731,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
 
        ret = btrfs_create_qgroup(trans, objectid);
        if (ret && ret != -EEXIST) {
-               if (ret != -ENOTCONN || btrfs_qgroup_enabled(fs_info)) {
+               if (unlikely(ret != -ENOTCONN || btrfs_qgroup_enabled(fs_info))) {
                        btrfs_abort_transaction(trans, ret);
                        goto fail;
                }
@@ -1744,13 +1744,13 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
         * snapshot
         */
        ret = btrfs_run_delayed_items(trans);
-       if (ret) {      /* Transaction aborted */
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto fail;
        }
 
        ret = record_root_in_trans(trans, root, 0);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto fail;
        }
@@ -1785,7 +1785,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
        old = btrfs_lock_root_node(root);
        ret = btrfs_cow_block(trans, root, old, NULL, 0, &old,
                              BTRFS_NESTING_COW);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_tree_unlock(old);
                free_extent_buffer(old);
                btrfs_abort_transaction(trans, ret);
@@ -1796,7 +1796,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
        /* clean up in any case */
        btrfs_tree_unlock(old);
        free_extent_buffer(old);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto fail;
        }
@@ -1812,7 +1812,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
        ret = btrfs_insert_root(trans, tree_root, &key, new_root_item);
        btrfs_tree_unlock(tmp);
        free_extent_buffer(tmp);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto fail;
        }
@@ -1824,7 +1824,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
                                 btrfs_root_id(parent_root),
                                 btrfs_ino(parent_inode), index,
                                 &fname.disk_name);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto fail;
        }
@@ -1839,7 +1839,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
        }
 
        ret = btrfs_reloc_post_snapshot(trans, pending);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto fail;
        }
@@ -1862,7 +1862,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
        ret = btrfs_insert_dir_item(trans, &fname.disk_name,
                                    parent_inode, &key, BTRFS_FT_DIR,
                                    index);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto fail;
        }
@@ -1872,14 +1872,14 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
        inode_set_mtime_to_ts(&parent_inode->vfs_inode,
                              inode_set_ctime_current(&parent_inode->vfs_inode));
        ret = btrfs_update_inode_fallback(trans, parent_inode);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto fail;
        }
        ret = btrfs_uuid_tree_add(trans, new_root_item->uuid,
                                  BTRFS_UUID_KEY_SUBVOL,
                                  objectid);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto fail;
        }
@@ -1887,7 +1887,7 @@ static noinline int create_pending_snapshot(struct btrfs_trans_handle *trans,
                ret = btrfs_uuid_tree_add(trans, new_root_item->received_uuid,
                                          BTRFS_UUID_KEY_RECEIVED_SUBVOL,
                                          objectid);
-               if (ret && ret != -EEXIST) {
+               if (unlikely(ret && ret != -EEXIST)) {
                        btrfs_abort_transaction(trans, ret);
                        goto fail;
                }
index b34ae17c5d70f05f0ccba5a2fa9384485ad54433..6aad6b65522b219e516bf0b8d1f67a7e70a3c25d 100644 (file)
@@ -439,7 +439,7 @@ static int process_one_buffer(struct extent_buffer *eb,
                };
 
                ret = btrfs_read_extent_buffer(eb, &check);
-               if (ret) {
+               if (unlikely(ret)) {
                        if (trans)
                                btrfs_abort_transaction(trans, ret);
                        else
@@ -451,7 +451,7 @@ static int process_one_buffer(struct extent_buffer *eb,
        if (wc->pin) {
                ASSERT(trans != NULL);
                ret = btrfs_pin_extent_for_log_replay(trans, eb);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        return ret;
                }
@@ -3570,7 +3570,7 @@ int btrfs_sync_log(struct btrfs_trans_handle *trans,
        btrfs_set_super_log_root_level(fs_info->super_for_commit, log_root_level);
        ret = write_all_supers(fs_info, 1);
        mutex_unlock(&fs_info->tree_log_mutex);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_set_log_full_commit(trans);
                btrfs_abort_transaction(trans, ret);
                goto out_wake_log_root;
@@ -7630,7 +7630,7 @@ int btrfs_recover_log_trees(struct btrfs_root *log_root_tree)
 
        ret = walk_log_tree(&wc);
        wc.log = NULL;
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto error;
        }
@@ -7645,7 +7645,7 @@ again:
 
                ret = btrfs_search_slot(NULL, log_root_tree, &key, path, 0, 0);
 
-               if (ret < 0) {
+               if (unlikely(ret < 0)) {
                        btrfs_abort_transaction(trans, ret);
                        goto error;
                }
@@ -7672,7 +7672,7 @@ again:
                if (IS_ERR(wc.root)) {
                        ret = PTR_ERR(wc.root);
                        wc.root = NULL;
-                       if (ret != -ENOENT) {
+                       if (unlikely(ret != -ENOENT)) {
                                btrfs_abort_transaction(trans, ret);
                                goto error;
                        }
@@ -7689,7 +7689,7 @@ again:
                         * each subsequent pass.
                         */
                        ret = btrfs_pin_extent_for_log_replay(trans, wc.log->node);
-                       if (ret) {
+                       if (unlikely(ret)) {
                                btrfs_abort_transaction(trans, ret);
                                goto error;
                        }
@@ -7698,13 +7698,13 @@ again:
 
                wc.root->log_root = wc.log;
                ret = btrfs_record_root_in_trans(trans, wc.root);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto next;
                }
 
                ret = walk_log_tree(&wc);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto next;
                }
@@ -7715,7 +7715,7 @@ again:
                        wc.subvol_path = path;
                        ret = fixup_inode_link_counts(&wc);
                        wc.subvol_path = NULL;
-                       if (ret) {
+                       if (unlikely(ret)) {
                                btrfs_abort_transaction(trans, ret);
                                goto next;
                        }
@@ -7728,7 +7728,7 @@ again:
                         * could only happen during mount.
                         */
                        ret = btrfs_init_root_free_objectid(root);
-                       if (ret) {
+                       if (unlikely(ret)) {
                                btrfs_abort_transaction(trans, ret);
                                goto next;
                        }
index 0bd7ea2c58ec6ae70c3ea9ed6239ee6660f22d17..df5bff34b1590b8a81dbba41718748f36aa58540 100644 (file)
@@ -487,12 +487,12 @@ static int rollback_verity(struct btrfs_inode *inode)
        inode->ro_flags &= ~BTRFS_INODE_RO_VERITY;
        btrfs_sync_inode_flags_to_i_flags(inode);
        ret = btrfs_update_inode(trans, inode);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
        ret = del_orphan(trans, inode);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
index 897294519a99c0cddeb52a6564b9554f69f9993f..2bec544d8ba300093ca5915ca5169847e0ba0625 100644 (file)
@@ -2243,7 +2243,7 @@ int btrfs_rm_device(struct btrfs_fs_info *fs_info,
        }
 
        ret = btrfs_rm_dev_item(trans, device);
-       if (ret) {
+       if (unlikely(ret)) {
                /* Any error in dev item removal is critical */
                btrfs_crit(fs_info,
                           "failed to remove device item for devid %llu: %d",
@@ -2843,21 +2843,21 @@ int btrfs_init_new_device(struct btrfs_fs_info *fs_info, const char *device_path
                mutex_lock(&fs_info->chunk_mutex);
                ret = init_first_rw_device(trans);
                mutex_unlock(&fs_info->chunk_mutex);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto error_sysfs;
                }
        }
 
        ret = btrfs_add_dev_item(trans, device);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto error_sysfs;
        }
 
        if (seeding_dev) {
                ret = btrfs_finish_sprout(trans);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto error_sysfs;
                }
@@ -3058,7 +3058,7 @@ static int btrfs_free_chunk(struct btrfs_trans_handle *trans, u64 chunk_offset)
        }
 
        ret = btrfs_del_item(trans, root, path);
-       if (ret < 0) {
+       if (unlikely(ret < 0)) {
                btrfs_err(fs_info, "failed to delete chunk %llu item", chunk_offset);
                btrfs_abort_transaction(trans, ret);
                goto out;
@@ -3283,7 +3283,7 @@ int btrfs_remove_chunk(struct btrfs_trans_handle *trans, u64 chunk_offset)
                ret = btrfs_free_dev_extent(trans, device,
                                            map->stripes[i].physical,
                                            &dev_extent_len);
-               if (ret) {
+               if (unlikely(ret)) {
                        mutex_unlock(&fs_devices->device_list_mutex);
                        btrfs_abort_transaction(trans, ret);
                        goto out;
@@ -3353,7 +3353,7 @@ int btrfs_remove_chunk(struct btrfs_trans_handle *trans, u64 chunk_offset)
                struct btrfs_space_info *space_info;
 
                space_info = btrfs_find_space_info(fs_info, sys_flags);
-               if (!space_info) {
+               if (unlikely(!space_info)) {
                        ret = -EINVAL;
                        btrfs_abort_transaction(trans, ret);
                        goto out;
@@ -3367,17 +3367,17 @@ int btrfs_remove_chunk(struct btrfs_trans_handle *trans, u64 chunk_offset)
                }
 
                ret = btrfs_chunk_alloc_add_chunk_item(trans, sys_bg);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
 
                ret = remove_chunk_item(trans, map, chunk_offset);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
-       } else if (ret) {
+       } else if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
@@ -3386,7 +3386,7 @@ int btrfs_remove_chunk(struct btrfs_trans_handle *trans, u64 chunk_offset)
 
        if (map->type & BTRFS_BLOCK_GROUP_SYSTEM) {
                ret = btrfs_del_sys_chunk(fs_info, chunk_offset);
-               if (ret) {
+               if (unlikely(ret)) {
                        btrfs_abort_transaction(trans, ret);
                        goto out;
                }
@@ -3402,7 +3402,7 @@ int btrfs_remove_chunk(struct btrfs_trans_handle *trans, u64 chunk_offset)
        btrfs_trans_release_chunk_metadata(trans);
 
        ret = btrfs_remove_block_group(trans, map);
-       if (ret) {
+       if (unlikely(ret)) {
                btrfs_abort_transaction(trans, ret);
                goto out;
        }
@@ -5041,7 +5041,7 @@ again:
        /* Now btrfs_update_device() will change the on-disk size. */
        ret = btrfs_update_device(trans, device);
        btrfs_trans_release_chunk_metadata(trans);
-       if (ret < 0) {
+       if (unlikely(ret < 0)) {
                btrfs_abort_transaction(trans, ret);
                btrfs_end_transaction(trans);
        } else {
@@ -5701,7 +5701,7 @@ int btrfs_chunk_alloc_add_chunk_item(struct btrfs_trans_handle *trans,
        item_size = btrfs_chunk_item_size(map->num_stripes);
 
        chunk = kzalloc(item_size, GFP_NOFS);
-       if (!chunk) {
+       if (unlikely(!chunk)) {
                ret = -ENOMEM;
                btrfs_abort_transaction(trans, ret);
                goto out;