]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
btrfs: remove redundant extent_buffer_uptodate() checks after read_tree_block()
authorFilipe Manana <fdmanana@suse.com>
Mon, 9 Feb 2026 10:54:27 +0000 (10:54 +0000)
committerDavid Sterba <dsterba@suse.com>
Tue, 7 Apr 2026 16:55:55 +0000 (18:55 +0200)
We have several places that call extent_buffer_uptodate() after reading a
tree block with read_tree_block(), but that is redundant since we already
call extent_buffer_uptodate() in the call chain of read_tree_block():

  read_tree_block()
     btrfs_read_extent_buffer()
        read_extent_buffer_pages()
           returns -EIO if extent_buffer_uptodate() returns false

So remove those redundant checks.

Reviewed-by: Boris Burkov <boris@bur.io>
Signed-off-by: Filipe Manana <fdmanana@suse.com>
Signed-off-by: David Sterba <dsterba@suse.com>
fs/btrfs/backref.c
fs/btrfs/ctree.c
fs/btrfs/disk-io.c
fs/btrfs/print-tree.c
fs/btrfs/qgroup.c
fs/btrfs/relocation.c
fs/btrfs/tree-mod-log.c

index 0428557fd77bffaf213f6c8567ae59a6e7d1c813..273924ca912c2f0a02ac5c6312bb73a61eb60424 100644 (file)
@@ -858,11 +858,6 @@ static int add_missing_keys(struct btrfs_fs_info *fs_info,
                        free_pref(ref);
                        return PTR_ERR(eb);
                }
-               if (unlikely(!extent_buffer_uptodate(eb))) {
-                       free_pref(ref);
-                       free_extent_buffer(eb);
-                       return -EIO;
-               }
 
                if (lock)
                        btrfs_tree_read_lock(eb);
@@ -1620,11 +1615,6 @@ again:
                                        ret = PTR_ERR(eb);
                                        goto out;
                                }
-                               if (unlikely(!extent_buffer_uptodate(eb))) {
-                                       free_extent_buffer(eb);
-                                       ret = -EIO;
-                                       goto out;
-                               }
 
                                if (!path->skip_locking)
                                        btrfs_tree_read_lock(eb);
index 7267b250266579c3797506465d75be2fc3160421..f2c925e90a878dff70d5b1bc1b296238aa86410d 100644 (file)
@@ -822,7 +822,6 @@ struct extent_buffer *btrfs_read_node_slot(struct extent_buffer *parent,
 {
        int level = btrfs_header_level(parent);
        struct btrfs_tree_parent_check check = { 0 };
-       struct extent_buffer *eb;
 
        if (slot < 0 || slot >= btrfs_header_nritems(parent))
                return ERR_PTR(-ENOENT);
@@ -835,16 +834,8 @@ struct extent_buffer *btrfs_read_node_slot(struct extent_buffer *parent,
        check.has_first_key = true;
        btrfs_node_key_to_cpu(parent, &check.first_key, slot);
 
-       eb = read_tree_block(parent->fs_info, btrfs_node_blockptr(parent, slot),
-                            &check);
-       if (IS_ERR(eb))
-               return eb;
-       if (unlikely(!extent_buffer_uptodate(eb))) {
-               free_extent_buffer(eb);
-               return ERR_PTR(-EIO);
-       }
-
-       return eb;
+       return read_tree_block(parent->fs_info, btrfs_node_blockptr(parent, slot),
+                              &check);
 }
 
 /*
index 200a165f9a84075168cba7c470a1cb10520b75b1..0f863c263e35cdd89470c752dd24eac0d0e02274 100644 (file)
@@ -2024,11 +2024,6 @@ static int btrfs_replay_log(struct btrfs_fs_info *fs_info,
                btrfs_put_root(log_tree_root);
                return ret;
        }
-       if (unlikely(!extent_buffer_uptodate(log_tree_root->node))) {
-               btrfs_err(fs_info, "failed to read log tree");
-               btrfs_put_root(log_tree_root);
-               return -EIO;
-       }
 
        /* returns with log_tree_root freed on success */
        ret = btrfs_recover_log_trees(log_tree_root);
@@ -2628,11 +2623,6 @@ static int load_super_root(struct btrfs_root *root, u64 bytenr, u64 gen, int lev
                root->node = NULL;
                return ret;
        }
-       if (unlikely(!extent_buffer_uptodate(root->node))) {
-               free_extent_buffer(root->node);
-               root->node = NULL;
-               return -EIO;
-       }
 
        btrfs_set_root_node(&root->root_item, root->node);
        root->commit_root = btrfs_root_node(root);
index b7dfe877cf8d9d3f73cc7ca94fd2536888543e8a..87e60a2d4bd819dcdd223abd36fa24cb337eab5c 100644 (file)
@@ -626,10 +626,6 @@ void btrfs_print_tree(const struct extent_buffer *c, bool follow)
                next = read_tree_block(fs_info, btrfs_node_blockptr(c, i), &check);
                if (IS_ERR(next))
                        continue;
-               if (!extent_buffer_uptodate(next)) {
-                       free_extent_buffer(next);
-                       continue;
-               }
 
                if (btrfs_is_leaf(next) &&
                   level != 1)
index 41589ce663718adf20b82e132876244fe32ce1dc..b3107b2278c7496dc9be288f37430a70f1c17ab8 100644 (file)
@@ -4883,10 +4883,6 @@ int btrfs_qgroup_trace_subtree_after_cow(struct btrfs_trans_handle *trans,
                reloc_eb = NULL;
                goto free_out;
        }
-       if (unlikely(!extent_buffer_uptodate(reloc_eb))) {
-               ret = -EIO;
-               goto free_out;
-       }
 
        ret = qgroup_trace_subtree_swap(trans, reloc_eb, subvol_eb,
                        block->last_snapshot, block->trace_leaf);
index 033f74fd6225cd3a43a95637d7aa4f76ce819161..0612e260b52af9a6983b3024a4060bd8703b8f8f 100644 (file)
@@ -2440,10 +2440,7 @@ static int get_tree_block_key(struct btrfs_fs_info *fs_info,
        eb = read_tree_block(fs_info, block->bytenr, &check);
        if (IS_ERR(eb))
                return PTR_ERR(eb);
-       if (unlikely(!extent_buffer_uptodate(eb))) {
-               free_extent_buffer(eb);
-               return -EIO;
-       }
+
        if (block->level == 0)
                btrfs_item_key_to_cpu(eb, &block->key, 0);
        else
index 603c1457130ebd0f0051ebc2495c4ae9459653b9..a8094928f4c9b80a0d7a5bc3d45421dfbf4f6f44 100644 (file)
@@ -1042,12 +1042,10 @@ struct extent_buffer *btrfs_get_old_root(struct btrfs_root *root, u64 time_seq)
                check.owner_root = btrfs_root_id(root);
 
                old = read_tree_block(fs_info, logical, &check);
-               if (WARN_ON(IS_ERR(old) || !extent_buffer_uptodate(old))) {
-                       if (!IS_ERR(old))
-                               free_extent_buffer(old);
+               if (WARN_ON(IS_ERR(old))) {
                        btrfs_warn(fs_info,
-                                  "failed to read tree block %llu from get_old_root",
-                                  logical);
+                                  "failed to read tree block %llu from get_old_root: %ld",
+                                  logical, PTR_ERR(old));
                } else {
                        struct tree_mod_elem *tm2;