mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 09:09:55 -04:00
bcachefs: bch2_path_get() reuses paths if upgrade_fails & !should_be_locked
Small additional optimization over the previous patch, bringing us closer to the original behaviour, except when we need to clone to avoid a transaction restart. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
@@ -628,8 +628,13 @@ bool __bch2_btree_path_upgrade_norestart(struct btree_trans *trans,
|
||||
{
|
||||
path->locks_want = new_locks_want;
|
||||
|
||||
struct get_locks_fail f = {};
|
||||
bool ret = !btree_path_get_locks(trans, path, true, &f, 0);
|
||||
/*
|
||||
* If we need it locked, we can't touch it. Otherwise, we can return
|
||||
* success - bch2_path_get() will use this path, and it'll just be
|
||||
* retraversed:
|
||||
*/
|
||||
bool ret = !btree_path_get_locks(trans, path, true, NULL, 0) ||
|
||||
!path->should_be_locked;
|
||||
|
||||
bch2_btree_path_verify_locks(path);
|
||||
return ret;
|
||||
|
||||
Reference in New Issue
Block a user