From: fdmanana@kernel.org
To: linux-btrfs@vger.kernel.org
Subject: [PATCH v2 09/18] btrfs: send: iterate waiting dir move rbtree only once when processing refs
Date: Thu, 19 Jan 2023 19:39:21 +0000 [thread overview]
Message-ID: <f4d99ec2e8089cb2015f9da2e37f85c70d886868.1674157020.git.fdmanana@suse.com> (raw)
In-Reply-To: <cover.1674157020.git.fdmanana@suse.com>
From: Filipe Manana <fdmanana@suse.com>
When processing the new references for an inode, we unnecessarily iterate
twice the waiting dir moves rbtree, once with is_waiting_for_move() and
if we found an entry in the rbtree, we iterate it again with a call to
get_waiting_dir_move(). This is pointless, we can make this simpler and
more efficient by calling only get_waiting_dir_move(), so just do that.
This patch is part of a larger patchset and the changelog of the last
patch in the series contains a sample performance test and results.
The patches that comprise the patchset are the following:
btrfs: send: directly return from did_overwrite_ref() and simplify it
btrfs: send: avoid unnecessary generation search at did_overwrite_ref()
btrfs: send: directly return from will_overwrite_ref() and simplify it
btrfs: send: avoid extra b+tree searches when checking reference overrides
btrfs: send: remove send_progress argument from can_rmdir()
btrfs: send: avoid duplicated orphan dir allocation and initialization
btrfs: send: avoid unnecessary orphan dir rbtree search at can_rmdir()
btrfs: send: reduce searches on parent root when checking if dir can be removed
btrfs: send: iterate waiting dir move rbtree only once when processing refs
btrfs: send: initialize all the red black trees earlier
btrfs: send: genericize the backref cache to allow it to be reused
btrfs: adapt lru cache to allow for 64 bits keys on 32 bits systems
btrfs: send: cache information about created directories
btrfs: allow a generation number to be associated with lru cache entries
btrfs: add an api to delete a specific entry from the lru cache
btrfs: send: use the lru cache to implement the name cache
btrfs: send: update size of roots array for backref cache entries
btrfs: send: cache utimes operations for directories if possible
Signed-off-by: Filipe Manana <fdmanana@suse.com>
---
fs/btrfs/send.c | 7 ++-----
1 file changed, 2 insertions(+), 5 deletions(-)
diff --git a/fs/btrfs/send.c b/fs/btrfs/send.c
index cd4aa0eae66c..20fcf1c0832a 100644
--- a/fs/btrfs/send.c
+++ b/fs/btrfs/send.c
@@ -4335,12 +4335,9 @@ static int process_recorded_refs(struct send_ctx *sctx, int *pending_move)
* the source path when performing its rename
* operation.
*/
- if (is_waiting_for_move(sctx, ow_inode)) {
- wdm = get_waiting_dir_move(sctx,
- ow_inode);
- ASSERT(wdm);
+ wdm = get_waiting_dir_move(sctx, ow_inode);
+ if (wdm)
wdm->orphanized = true;
- }
/*
* Make sure we clear our orphanized inode's
--
2.35.1
next prev parent reply other threads:[~2023-01-19 19:39 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-01-11 11:36 [PATCH 00/19] btrfs: some optimizations for send fdmanana
2023-01-11 11:36 ` [PATCH 01/19] btrfs: send: directly return from did_overwrite_ref() and simplify it fdmanana
2023-01-11 11:36 ` [PATCH 02/19] btrfs: send: avoid unnecessary generation search at did_overwrite_ref() fdmanana
2023-01-11 11:36 ` [PATCH 03/19] btrfs: send: directly return from will_overwrite_ref() and simplify it fdmanana
2023-01-11 11:36 ` [PATCH 04/19] btrfs: send: avoid extra b+tree searches when checking reference overrides fdmanana
2023-01-11 11:36 ` [PATCH 05/19] btrfs: send: remove send_progress argument from can_rmdir() fdmanana
2023-01-11 11:36 ` [PATCH 06/19] btrfs: send: avoid duplicated orphan dir allocation and initialization fdmanana
2023-01-11 11:36 ` [PATCH 07/19] btrfs: send: avoid unnecessary orphan dir rbtree search at can_rmdir() fdmanana
2023-01-11 11:36 ` [PATCH 08/19] btrfs: send: reduce searches on parent root when checking if dir can be removed fdmanana
2023-01-11 11:36 ` [PATCH 09/19] btrfs: send: iterate waiting dir move rbtree only once when processing refs fdmanana
2023-01-11 11:36 ` [PATCH 10/19] btrfs: send: use MT_FLAGS_LOCK_EXTERN for the backref cache maple tree fdmanana
2023-01-11 11:36 ` [PATCH 11/19] btrfs: send: initialize all the red black trees earlier fdmanana
2023-01-11 11:36 ` [PATCH 12/19] btrfs: send: genericize the backref cache to allow it to be reused fdmanana
2023-01-11 11:36 ` [PATCH 13/19] btrfs: adapt lru cache to allow for 64 bits keys on 32 bits systems fdmanana
2023-01-11 11:36 ` [PATCH 14/19] btrfs: send: cache information about created directories fdmanana
2023-01-11 11:36 ` [PATCH 15/19] btrfs: allow a generation number to be associated with lru cache entries fdmanana
2023-01-11 11:36 ` [PATCH 16/19] btrfs: add an api to delete a specific entry from the lru cache fdmanana
2023-01-11 11:36 ` [PATCH 17/19] btrfs: send: use the lru cache to implement the name cache fdmanana
2023-01-11 11:36 ` [PATCH 18/19] btrfs: send: update size of roots array for backref cache entries fdmanana
2023-01-11 11:36 ` [PATCH 19/19] btrfs: send: cache utimes operations for directories if possible fdmanana
2023-01-19 19:39 ` [PATCH v2 00/18] btrfs: some optimizations for send fdmanana
2023-01-19 19:39 ` [PATCH v2 01/18] btrfs: send: directly return from did_overwrite_ref() and simplify it fdmanana
2023-01-19 19:39 ` [PATCH v2 02/18] btrfs: send: avoid unnecessary generation search at did_overwrite_ref() fdmanana
2023-01-19 19:39 ` [PATCH v2 03/18] btrfs: send: directly return from will_overwrite_ref() and simplify it fdmanana
2023-01-19 19:39 ` [PATCH v2 04/18] btrfs: send: avoid extra b+tree searches when checking reference overrides fdmanana
2023-01-19 19:39 ` [PATCH v2 05/18] btrfs: send: remove send_progress argument from can_rmdir() fdmanana
2023-01-19 19:39 ` [PATCH v2 06/18] btrfs: send: avoid duplicated orphan dir allocation and initialization fdmanana
2023-01-19 19:39 ` [PATCH v2 07/18] btrfs: send: avoid unnecessary orphan dir rbtree search at can_rmdir() fdmanana
2023-01-19 19:39 ` [PATCH v2 08/18] btrfs: send: reduce searches on parent root when checking if dir can be removed fdmanana
2023-01-19 19:39 ` fdmanana [this message]
2023-01-19 19:39 ` [PATCH v2 10/18] btrfs: send: initialize all the red black trees earlier fdmanana
2023-01-19 19:39 ` [PATCH v2 11/18] btrfs: send: genericize the backref cache to allow it to be reused fdmanana
2023-01-19 19:39 ` [PATCH v2 12/18] btrfs: adapt lru cache to allow for 64 bits keys on 32 bits systems fdmanana
2023-01-19 19:39 ` [PATCH v2 13/18] btrfs: send: cache information about created directories fdmanana
2023-01-19 19:39 ` [PATCH v2 14/18] btrfs: allow a generation number to be associated with lru cache entries fdmanana
2023-01-19 19:39 ` [PATCH v2 15/18] btrfs: add an api to delete a specific entry from the lru cache fdmanana
2023-01-19 19:39 ` [PATCH v2 16/18] btrfs: send: use the lru cache to implement the name cache fdmanana
2023-01-19 19:39 ` [PATCH v2 17/18] btrfs: send: update size of roots array for backref cache entries fdmanana
2023-01-19 19:39 ` [PATCH v2 18/18] btrfs: send: cache utimes operations for directories if possible fdmanana
2023-01-20 18:45 ` [PATCH v2 00/18] btrfs: some optimizations for send 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=f4d99ec2e8089cb2015f9da2e37f85c70d886868.1674157020.git.fdmanana@suse.com \
--to=fdmanana@kernel.org \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).