Commit 4c4686d1 authored by Josef Bacik's avatar Josef Bacik Committed by David Sterba
Browse files

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: default avatarJosef Bacik <josef@toxicpanda.com>
Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
parent 562d4254
Loading
Loading
Loading
Loading
+4 −5
Original line number Diff line number Diff line
@@ -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 @@ static noinline int do_walk_down(struct btrfs_trans_handle *trans,
		 * 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 @@ static noinline int do_walk_down(struct btrfs_trans_handle *trans,
			goto out_unlock;
	}
no_delete:
	wc->refs[level - 1] = 0;
	wc->flags[level - 1] = 0;
	wc->lookup_info = 1;
	ret = 1;