diff options
author | Kent Overstreet <kent.overstreet@gmail.com> | 2020-06-03 16:21:35 -0400 |
---|---|---|
committer | Kent Overstreet <kent.overstreet@gmail.com> | 2020-06-03 19:56:33 -0400 |
commit | 1952c0790c74e4e81d7066a19aabc5c55a13f10f (patch) | |
tree | 501fa5db6a5f1fd3b2412a2660e995c74ebf0bba /libbcachefs/btree_locking.h | |
parent | 90d54b388666b258c97be6a4e632824d136356c4 (diff) |
Update bcachefs sources to c9b4a210f9 fixup! bcachefs: Fixes for going RO
Diffstat (limited to 'libbcachefs/btree_locking.h')
-rw-r--r-- | libbcachefs/btree_locking.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/libbcachefs/btree_locking.h b/libbcachefs/btree_locking.h index 9081d3fc..7aa11c00 100644 --- a/libbcachefs/btree_locking.h +++ b/libbcachefs/btree_locking.h @@ -182,11 +182,21 @@ static inline bool btree_node_lock(struct btree *b, struct bpos pos, struct btree_iter *iter, enum six_lock_type type) { + bool ret; + EBUG_ON(level >= BTREE_MAX_DEPTH); +#ifdef CONFIG_BCACHEFS_DEBUG + iter->trans->locking = b; +#endif - return likely(six_trylock_type(&b->lock, type)) || + ret = likely(six_trylock_type(&b->lock, type)) || btree_node_lock_increment(iter, b, level, type) || __bch2_btree_node_lock(b, pos, level, iter, type); + +#ifdef CONFIG_BCACHEFS_DEBUG + iter->trans->locking = NULL; +#endif + return ret; } bool __bch2_btree_node_relock(struct btree_iter *, unsigned); |