summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFilipe Manana <fdmanana@suse.com>2026-02-09 13:54:27 +0300
committerDavid Sterba <dsterba@suse.com>2026-04-07 19:55:55 +0300
commit90b7d4c415b2992125b8ff8fcd3191b14047fb7f (patch)
tree2e6095a28767a313e109b6158f0593cd58b6b3a2
parent6ee5c986b0ecf3e4be8268e607b62d01676dc115 (diff)
downloadlinux-90b7d4c415b2992125b8ff8fcd3191b14047fb7f.tar.xz
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 <boris@bur.io> Signed-off-by: Filipe Manana <fdmanana@suse.com> Signed-off-by: David Sterba <dsterba@suse.com>
-rw-r--r--fs/btrfs/backref.c10
-rw-r--r--fs/btrfs/ctree.c13
-rw-r--r--fs/btrfs/disk-io.c10
-rw-r--r--fs/btrfs/print-tree.c4
-rw-r--r--fs/btrfs/qgroup.c4
-rw-r--r--fs/btrfs/relocation.c5
-rw-r--r--fs/btrfs/tree-mod-log.c8
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 @@ 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);
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;