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:
Kent Overstreet
2025-05-22 16:03:08 -04:00
parent be9fecdcda
commit eb34365ada

View File

@@ -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);
}