summaryrefslogtreecommitdiff
path: root/fs/bcachefs/btree_key_cache.c
diff options
context:
space:
mode:
authorKent Overstreet <kent.overstreet@gmail.com>2021-07-14 15:13:27 -0400
committerKent Overstreet <kent.overstreet@gmail.com>2022-05-30 18:16:37 -0400
commitdd2068a86cff9000ade02de9016dbe5f2577b12c (patch)
treeca556ab201c5007dc4e45a167655c29cf4cae71f /fs/bcachefs/btree_key_cache.c
parent5845a7a639311c5609f57ec6262e72fbd518ab9c (diff)
bcachefs: Tighten up btree_iter locking assertions
We weren't correctly verifying that we had interior node intent locks - this patch also fixes bugs uncovered by the new assertions. Signed-off-by: Kent Overstreet <kent.overstreet@gmail.com>
Diffstat (limited to 'fs/bcachefs/btree_key_cache.c')
-rw-r--r--fs/bcachefs/btree_key_cache.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/fs/bcachefs/btree_key_cache.c b/fs/bcachefs/btree_key_cache.c
index 0f8ff4aa76e5..6a2984e97b1f 100644
--- a/fs/bcachefs/btree_key_cache.c
+++ b/fs/bcachefs/btree_key_cache.c
@@ -270,7 +270,9 @@ int bch2_btree_iter_traverse_cached(struct btree_iter *iter)
BUG_ON(iter->level);
- if (btree_node_locked(iter, 0)) {
+ iter->l[1].b = NULL;
+
+ if (bch2_btree_node_relock(iter, 0)) {
ck = (void *) iter->l[0].b;
goto fill;
}