summaryrefslogtreecommitdiff
path: root/libbcachefs/btree_iter.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbcachefs/btree_iter.c')
-rw-r--r--libbcachefs/btree_iter.c15
1 files changed, 8 insertions, 7 deletions
diff --git a/libbcachefs/btree_iter.c b/libbcachefs/btree_iter.c
index a1512eb0..05bd0d60 100644
--- a/libbcachefs/btree_iter.c
+++ b/libbcachefs/btree_iter.c
@@ -193,12 +193,14 @@ bool __bch2_btree_node_relock(struct btree_trans *trans,
return true;
}
fail:
- trace_btree_node_relock_fail(trans->fn, _RET_IP_,
- path->btree_id,
- &path->pos,
- (unsigned long) b,
- path->l[level].lock_seq,
- is_btree_node(path, level) ? b->c.lock.state.seq : 0);
+ if (b != BTREE_ITER_NO_NODE_CACHED &&
+ b != BTREE_ITER_NO_NODE_INIT)
+ trace_btree_node_relock_fail(trans->fn, _RET_IP_,
+ path->btree_id,
+ &path->pos,
+ (unsigned long) b,
+ path->l[level].lock_seq,
+ is_btree_node(path, level) ? b->c.lock.state.seq : 0);
return false;
}
@@ -363,7 +365,6 @@ bool __bch2_btree_node_lock(struct btree_trans *trans,
if (btree_node_locked(linked, level) &&
bpos_cmp(pos, btree_node_pos((void *) linked->l[level].b,
linked->cached)) <= 0) {
- BUG_ON(trans->in_traverse_all);
reason = 7;
goto deadlock;
}