From c81f5836a41fc796f37a5ff2bb39f7c76d07d35d Mon Sep 17 00:00:00 2001 From: Kent Overstreet Date: Fri, 21 Oct 2022 17:26:49 -0400 Subject: [PATCH] bcachefs: Don't touch c->flags in bch2_trans_iter_init() This moves the JOURNAL_REPLAY_DONE flag check from bch2_trans_iter_init() to bch2_trans_init(), where we stash a copy in btree_trans - gaining us a small performance improvement. Signed-off-by: Kent Overstreet --- fs/bcachefs/btree_iter.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/fs/bcachefs/btree_iter.c b/fs/bcachefs/btree_iter.c index 51eac08e9eea0..15bf079e17aba 100644 --- a/fs/bcachefs/btree_iter.c +++ b/fs/bcachefs/btree_iter.c @@ -1167,10 +1167,12 @@ static void btree_path_copy(struct btree_trans *trans, struct btree_path *dst, (void *) src + offset, sizeof(struct btree_path) - offset); - for (i = 0; i < BTREE_MAX_DEPTH; i++) - if (btree_node_locked(dst, i)) - six_lock_increment(&dst->l[i].b->c.lock, - __btree_lock_want(dst, i)); + for (i = 0; i < BTREE_MAX_DEPTH; i++) { + unsigned t = btree_node_locked_type(dst, i); + + if (t != BTREE_NODE_UNLOCKED) + six_lock_increment(&dst->l[i].b->c.lock, t); + } trans->paths_sorted = false; } @@ -2631,7 +2633,7 @@ static inline void __bch2_trans_iter_init(struct btree_trans *trans, unsigned depth, unsigned flags) { - if (trans->restarted) + if (unlikely(trans->restarted)) panic("bch2_trans_iter_init(): in transaction restart, %s by %pS\n", bch2_err_str(trans->restarted), (void *) trans->last_restarted_ip); -- 2.30.2