From 90b7d4c415b2992125b8ff8fcd3191b14047fb7f Mon Sep 17 00:00:00 2001 From: Filipe Manana Date: Mon, 9 Feb 2026 10:54:27 +0000 Subject: [PATCH] btrfs: remove redundant extent_buffer_uptodate() checks after read_tree_block() 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 Signed-off-by: Filipe Manana Signed-off-by: David Sterba --- fs/btrfs/backref.c | 10 ---------- fs/btrfs/ctree.c | 13 ++----------- fs/btrfs/disk-io.c | 10 ---------- fs/btrfs/print-tree.c | 4 ---- fs/btrfs/qgroup.c | 4 ---- fs/btrfs/relocation.c | 5 +---- fs/btrfs/tree-mod-log.c | 8 +++----- 7 files changed, 6 insertions(+), 48 deletions(-) diff --git a/fs/btrfs/backref.c b/fs/btrfs/backref.c index 0428557fd77b..273924ca912c 100644 --- a/fs/btrfs/backref.c +++ b/fs/btrfs/backref.c @@ -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 @@ static int find_parent_nodes(struct btrfs_backref_walk_ctx *ctx, 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); diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c index 7267b2502665..f2c925e90a87 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c @@ -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); } /* diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 200a165f9a84..0f863c263e35 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -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); diff --git a/fs/btrfs/print-tree.c b/fs/btrfs/print-tree.c index b7dfe877cf8d..87e60a2d4bd8 100644 --- a/fs/btrfs/print-tree.c +++ b/fs/btrfs/print-tree.c @@ -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) diff --git a/fs/btrfs/qgroup.c b/fs/btrfs/qgroup.c index 41589ce66371..b3107b2278c7 100644 --- a/fs/btrfs/qgroup.c +++ b/fs/btrfs/qgroup.c @@ -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); diff --git a/fs/btrfs/relocation.c b/fs/btrfs/relocation.c index 033f74fd6225..0612e260b52a 100644 --- a/fs/btrfs/relocation.c +++ b/fs/btrfs/relocation.c @@ -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 diff --git a/fs/btrfs/tree-mod-log.c b/fs/btrfs/tree-mod-log.c index 603c1457130e..a8094928f4c9 100644 --- a/fs/btrfs/tree-mod-log.c +++ b/fs/btrfs/tree-mod-log.c @@ -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;