From: Qu Wenruo Date: Sun, 15 Mar 2026 21:38:24 +0000 (+1030) Subject: btrfs: remove atomic parameter from btrfs_buffer_uptodate() X-Git-Tag: ceph-for-7.1-rc4~321^2~47 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=908ab5634751c4168e864d56a5270e251ce89ee3;p=ceph-client.git btrfs: remove atomic parameter from btrfs_buffer_uptodate() That parameter was introduced by commit b9fab919b748 ("Btrfs: avoid sleeping in verify_parent_transid while atomic"). At that time we needed to lock the extent buffer range inside the io tree to avoid content changes, thus it could sleep. But that behavior is no longer there, as later commit 9e2aff90fc2a ("btrfs: stop using lock_extent in btrfs_buffer_uptodate") dropped the io tree lock. We can remove the @atomic parameter safely now. Reviewed-by: Filipe Manana Signed-off-by: Qu Wenruo Reviewed-by: David Sterba Signed-off-by: David Sterba --- diff --git a/fs/btrfs/ctree.c b/fs/btrfs/ctree.c index cdd6c1422b53..5c68c541de51 100644 --- a/fs/btrfs/ctree.c +++ b/fs/btrfs/ctree.c @@ -1499,7 +1499,7 @@ read_block_for_search(struct btrfs_root *root, struct btrfs_path *p, reada_for_search(fs_info, p, parent_level, slot, key->objectid); /* first we do an atomic uptodate check */ - if (btrfs_buffer_uptodate(tmp, check.transid, true, NULL) > 0) { + if (btrfs_buffer_uptodate(tmp, check.transid, NULL) > 0) { /* * Do extra check for first_key, eb can be stale due to * being cached, read from scrub, or have multiple diff --git a/fs/btrfs/disk-io.c b/fs/btrfs/disk-io.c index 45e6dde60274..c835141ee384 100644 --- a/fs/btrfs/disk-io.c +++ b/fs/btrfs/disk-io.c @@ -109,7 +109,7 @@ static void csum_tree_block(struct extent_buffer *buf, u8 *result) * detect blocks that either didn't get written at all or got written * in the wrong place. */ -int btrfs_buffer_uptodate(struct extent_buffer *eb, u64 parent_transid, bool atomic, +int btrfs_buffer_uptodate(struct extent_buffer *eb, u64 parent_transid, const struct btrfs_tree_parent_check *check) { if (!extent_buffer_uptodate(eb)) @@ -125,9 +125,6 @@ int btrfs_buffer_uptodate(struct extent_buffer *eb, u64 parent_transid, bool ato return 1; } - if (atomic) - return -EAGAIN; - if (btrfs_header_generation(eb) != parent_transid) { btrfs_err_rl(eb->fs_info, "parent transid verify failed on logical %llu mirror %u wanted %llu found %llu", @@ -1001,7 +998,7 @@ static struct btrfs_root *read_tree_root_path(struct btrfs_root *tree_root, goto fail; } - ret = btrfs_buffer_uptodate(root->node, generation, false, &check); + ret = btrfs_buffer_uptodate(root->node, generation, &check); if (unlikely(ret <= 0)) { if (ret == 0) ret = -EIO; diff --git a/fs/btrfs/disk-io.h b/fs/btrfs/disk-io.h index 343e332b17c0..9185f8f02eeb 100644 --- a/fs/btrfs/disk-io.h +++ b/fs/btrfs/disk-io.h @@ -107,7 +107,7 @@ static inline struct btrfs_root *btrfs_grab_root(struct btrfs_root *root) void btrfs_put_root(struct btrfs_root *root); void btrfs_mark_buffer_dirty(struct btrfs_trans_handle *trans, struct extent_buffer *buf); -int btrfs_buffer_uptodate(struct extent_buffer *buf, u64 parent_transid, bool atomic, +int btrfs_buffer_uptodate(struct extent_buffer *buf, u64 parent_transid, const struct btrfs_tree_parent_check *check); int btrfs_read_extent_buffer(struct extent_buffer *buf, const struct btrfs_tree_parent_check *check); diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c index 5818ce1ae89d..92ba7867e74b 100644 --- a/fs/btrfs/extent-tree.c +++ b/fs/btrfs/extent-tree.c @@ -5780,7 +5780,7 @@ static int check_next_block_uptodate(struct btrfs_trans_handle *trans, generation = btrfs_node_ptr_generation(path->nodes[level], path->slots[level]); - if (btrfs_buffer_uptodate(next, generation, false, NULL)) + if (btrfs_buffer_uptodate(next, generation, NULL)) return 0; check.level = level - 1; diff --git a/fs/btrfs/extent_io.c b/fs/btrfs/extent_io.c index f59d1f6aeaa2..a0d61a6820ce 100644 --- a/fs/btrfs/extent_io.c +++ b/fs/btrfs/extent_io.c @@ -3904,7 +3904,7 @@ int read_extent_buffer_pages_nowait(struct extent_buffer *eb, int mirror_num, if (extent_buffer_uptodate(eb)) { int ret; - ret = btrfs_buffer_uptodate(eb, 0, true, check); + ret = btrfs_buffer_uptodate(eb, 0, check); if (unlikely(ret <= 0)) { if (ret == 0) ret = -EIO; @@ -3935,7 +3935,7 @@ int read_extent_buffer_pages_nowait(struct extent_buffer *eb, int mirror_num, int ret; clear_extent_buffer_reading(eb); - ret = btrfs_buffer_uptodate(eb, 0, true, check); + ret = btrfs_buffer_uptodate(eb, 0, check); if (unlikely(ret <= 0)) { if (ret == 0) ret = -EIO; @@ -4653,7 +4653,7 @@ void btrfs_readahead_tree_block(struct btrfs_fs_info *fs_info, if (IS_ERR(eb)) return; - if (btrfs_buffer_uptodate(eb, gen, true, NULL)) { + if (btrfs_buffer_uptodate(eb, gen, NULL)) { free_extent_buffer(eb); return; } diff --git a/fs/btrfs/tree-log.c b/fs/btrfs/tree-log.c index 6cf2828ba500..de4707b1227e 100644 --- a/fs/btrfs/tree-log.c +++ b/fs/btrfs/tree-log.c @@ -457,7 +457,7 @@ static int process_one_buffer(struct extent_buffer *eb, return ret; } - if (btrfs_buffer_uptodate(eb, gen, false, NULL) && level == 0) { + if (btrfs_buffer_uptodate(eb, gen, NULL) && level == 0) { ret = btrfs_exclude_logged_extents(eb); if (ret) btrfs_abort_transaction(trans, ret);