mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-03 22:57:21 -04:00
bcachefs: btree_path_down() optimization
We should be calling btree_node_mem_ptr_set() before path_level_init(), since we already touched the key that btree_node_mem_ptr_set() will modify and path_level_init() will be doing the lookup in the child btree node we're recursing to. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
This commit is contained in:
committed by
Kent Overstreet
parent
bbf4288401
commit
223b560e02
@@ -1410,9 +1410,6 @@ static __always_inline int btree_path_down(struct btree_trans *trans,
|
||||
if (unlikely(ret))
|
||||
goto err;
|
||||
|
||||
mark_btree_node_locked(trans, path, level, lock_type);
|
||||
btree_path_level_init(trans, path, b);
|
||||
|
||||
if (likely(!trans->journal_replay_not_finished &&
|
||||
tmp.k->k.type == KEY_TYPE_btree_ptr_v2) &&
|
||||
unlikely(b != btree_node_mem_ptr(tmp.k)))
|
||||
@@ -1420,7 +1417,10 @@ static __always_inline int btree_path_down(struct btree_trans *trans,
|
||||
|
||||
if (btree_node_read_locked(path, level + 1))
|
||||
btree_node_unlock(trans, path, level + 1);
|
||||
|
||||
mark_btree_node_locked(trans, path, level, lock_type);
|
||||
path->level = level;
|
||||
btree_path_level_init(trans, path, b);
|
||||
|
||||
bch2_btree_path_verify_locks(path);
|
||||
err:
|
||||
|
||||
Reference in New Issue
Block a user