All of lore.kernel.org
 help / color / mirror / Atom feed
From: Josef Bacik <josef@toxicpanda.com>
To: linux-btrfs@vger.kernel.org, kernel-team@fb.com
Subject: [PATCH 06/15] btrfs: remove need_account in do_walk_down
Date: Fri, 19 Apr 2024 14:17:01 -0400	[thread overview]
Message-ID: <ce3aec3c2059431eb1eccbd9e68e8b26e65fd57f.1713550368.git.josef@toxicpanda.com> (raw)
In-Reply-To: <cover.1713550368.git.josef@toxicpanda.com>

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.  Re-order re-setting 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 <josef@toxicpanda.com>
---
 fs/btrfs/extent-tree.c | 9 ++++-----
 1 file changed, 4 insertions(+), 5 deletions(-)

diff --git a/fs/btrfs/extent-tree.c b/fs/btrfs/extent-tree.c
index 9132cfb7fee1..afe0694c675b 100644
--- a/fs/btrfs/extent-tree.c
+++ b/fs/btrfs/extent-tree.c
@@ -5480,7 +5480,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]);
@@ -5520,7 +5519,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;
@@ -5563,8 +5561,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,
@@ -5609,7 +5605,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) {
@@ -5634,6 +5631,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;
 
-- 
2.43.0


  parent reply	other threads:[~2024-04-19 18:17 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-04-19 18:16 [PATCH 00/15] btrfs: snapshot delete cleanups Josef Bacik
2024-04-19 18:16 ` [PATCH 01/15] btrfs: don't do find_extent_buffer in do_walk_down Josef Bacik
2024-04-23 21:55   ` Qu Wenruo
2024-04-19 18:16 ` [PATCH 02/15] btrfs: push ->owner_root check into btrfs_read_extent_buffer Josef Bacik
2024-04-23 22:09   ` Qu Wenruo
2024-04-19 18:16 ` [PATCH 03/15] btrfs: use btrfs_read_extent_buffer in do_walk_down Josef Bacik
2024-04-19 18:16 ` [PATCH 04/15] btrfs: push lookup_info into walk_control Josef Bacik
2024-04-19 18:17 ` [PATCH 05/15] btrfs: move the eb uptodate code into it's own helper Josef Bacik
2024-04-19 18:17 ` Josef Bacik [this message]
2024-04-19 18:17 ` [PATCH 07/15] btrfs: unify logic to decide if we need to walk down into a node Josef Bacik
2024-04-19 18:17 ` [PATCH 08/15] btrfs: extract the reference dropping code into it's own helper Josef Bacik
2024-04-19 18:17 ` [PATCH 09/15] btrfs: don't BUG_ON ENOMEM in walk_down_proc Josef Bacik
2024-04-19 18:17 ` [PATCH 10/15] btrfs: handle errors from ref mods during UPDATE_BACKREF Josef Bacik
2024-04-19 18:17 ` [PATCH 11/15] btrfs: replace BUG_ON with ASSERT in walk_down_proc Josef Bacik
2024-04-19 18:17 ` [PATCH 12/15] btrfs: clean up our handling of refs == 0 in snapshot delete Josef Bacik
2024-04-24 12:23   ` David Sterba
2024-04-19 18:17 ` [PATCH 13/15] btrfs: convert correctness BUG_ON()'s to ASSERT()'s in walk_up_proc Josef Bacik
2024-04-19 18:17 ` [PATCH 14/15] btrfs: handle errors from btrfs_dec_ref properly Josef Bacik
2024-04-19 18:17 ` [PATCH 15/15] btrfs: add documentation around snapshot delete Josef Bacik
2024-04-24 12:31 ` [PATCH 00/15] btrfs: snapshot delete cleanups David Sterba

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=ce3aec3c2059431eb1eccbd9e68e8b26e65fd57f.1713550368.git.josef@toxicpanda.com \
    --to=josef@toxicpanda.com \
    --cc=kernel-team@fb.com \
    --cc=linux-btrfs@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.