aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJosef Bacik <[email protected]>2024-05-07 14:12:07 -0400
committerDavid Sterba <[email protected]>2024-07-11 15:33:24 +0200
commit4c4686d19dbaaaf46c5ac295e6e27580d514c4f5 (patch)
tree95f120e1b6fca0595b9afa7538b21ab32d6d8e0b
parent562d425454e8b8ee628fafb15e88b0ef7ec371e6 (diff)
btrfs: remove local variable need_account in do_walk_down()
We only set this if wc->refs[level - 1] > 1, and we check this way up above where we need it because the first thing we do before dropping our refs is reset wc->refs[level - 1] to 0. Reorder resetting of wc->refs to after our drop logic, and then remove the need_account variable and simply check wc->refs[level - 1] directly instead of using a variable. Signed-off-by: Josef Bacik <[email protected]> Reviewed-by: David Sterba <[email protected]> Signed-off-by: David Sterba <[email protected]>
-rw-r--r--fs/btrfs/extent-tree.c9
1 files changed, 4 insertions, 5 deletions
diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 4a516ad087e7..5a2102d0b95f 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -5477,7 +5477,6 @@ static noinline int do_walk_down(struct btrfs_trans_handle *trans,
struct extent_buffer *next;
int level = wc->level;
int ret = 0;
- bool need_account = false;
generation = btrfs_node_ptr_generation(path->nodes[level],
path->slots[level]);
@@ -5517,7 +5516,6 @@ static noinline int do_walk_down(struct btrfs_trans_handle *trans,
if (wc->stage == DROP_REFERENCE) {
if (wc->refs[level - 1] > 1) {
- need_account = true;
if (level == 1 &&
(wc->flags[0] & BTRFS_BLOCK_FLAG_FULL_BACKREF))
goto skip;
@@ -5560,8 +5558,6 @@ static noinline int do_walk_down(struct btrfs_trans_handle *trans,
wc->reada_slot = 0;
return 0;
skip:
- wc->refs[level - 1] = 0;
- wc->flags[level - 1] = 0;
if (wc->stage == DROP_REFERENCE) {
struct btrfs_ref ref = {
.action = BTRFS_DROP_DELAYED_REF,
@@ -5606,7 +5602,8 @@ skip:
* already accounted them at merge time (replace_path),
* thus we could skip expensive subtree trace here.
*/
- if (btrfs_root_id(root) != BTRFS_TREE_RELOC_OBJECTID && need_account) {
+ if (btrfs_root_id(root) != BTRFS_TREE_RELOC_OBJECTID &&
+ wc->refs[level - 1] > 1) {
ret = btrfs_qgroup_trace_subtree(trans, next,
generation, level - 1);
if (ret) {
@@ -5631,6 +5628,8 @@ skip:
goto out_unlock;
}
no_delete:
+ wc->refs[level - 1] = 0;
+ wc->flags[level - 1] = 0;
wc->lookup_info = 1;
ret = 1;