diff options
Diffstat (limited to 'libbcachefs/btree_locking.h')
-rw-r--r-- | libbcachefs/btree_locking.h | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/libbcachefs/btree_locking.h b/libbcachefs/btree_locking.h index acfe5b59..ca2992ba 100644 --- a/libbcachefs/btree_locking.h +++ b/libbcachefs/btree_locking.h @@ -92,6 +92,7 @@ static inline void btree_node_unlock(struct btree_iter *iter, unsigned level) int lock_type = btree_node_locked_type(iter, level); EBUG_ON(!level && iter->flags & BTREE_ITER_UPTODATE); + EBUG_ON(level >= BTREE_MAX_DEPTH); if (lock_type != BTREE_NODE_UNLOCKED) six_unlock_type(&iter->nodes[level]->lock, lock_type); @@ -106,6 +107,8 @@ static inline bool btree_node_lock(struct btree *b, struct bpos pos, struct btree_iter *iter, enum six_lock_type type) { + EBUG_ON(level >= BTREE_MAX_DEPTH); + return likely(six_trylock_type(&b->lock, type)) || __bch2_btree_node_lock(b, pos, level, iter, type); } |