mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-10 07:59:42 -04:00
bcachefs: Clear should_be_locked before unlock in key_cache_drop()
We're adding new should_be_locked assertions, also add a comment explaining why clearing should_be_locked is safe here. Signed-off-by: Kent Overstreet <kent.overstreet@linux.dev>
This commit is contained in:
@@ -646,9 +646,16 @@ void bch2_btree_key_cache_drop(struct btree_trans *trans,
|
||||
unsigned i;
|
||||
trans_for_each_path(trans, path2, i)
|
||||
if (path2->l[0].b == (void *) ck) {
|
||||
/*
|
||||
* It's safe to clear should_be_locked here because
|
||||
* we're evicting from the key cache, and we still have
|
||||
* the underlying btree locked: filling into the key
|
||||
* cache would require taking a write lock on the btree
|
||||
* node
|
||||
*/
|
||||
path2->should_be_locked = false;
|
||||
__bch2_btree_path_unlock(trans, path2);
|
||||
path2->l[0].b = ERR_PTR(-BCH_ERR_no_btree_node_drop);
|
||||
path2->should_be_locked = false;
|
||||
btree_path_set_dirty(path2, BTREE_ITER_NEED_TRAVERSE);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user