struct btree_iter *linked;
unsigned level = b->level;
- /* caller now responsible for unlocking @b */
-
- BUG_ON(iter->l[level].b != b);
- BUG_ON(!btree_node_intent_locked(iter, level));
-
- iter->l[level].b = BTREE_ITER_NOT_END;
- mark_btree_node_unlocked(iter, level);
-
trans_for_each_iter(iter->trans, linked)
if (linked->l[level].b == b) {
__btree_node_unlock(linked, level);
/* Successful split, update the iterator to point to the new nodes: */
+ six_lock_increment(&b->lock, SIX_LOCK_intent);
bch2_btree_iter_node_drop(iter, b);
if (n3)
bch2_btree_iter_node_replace(iter, n3);
bch2_open_buckets_put(c, &n->ob);
+ six_lock_increment(&b->lock, SIX_LOCK_intent);
bch2_btree_iter_node_drop(iter, b);
+ bch2_btree_iter_node_drop(iter, m);
+
bch2_btree_iter_node_replace(iter, n);
bch2_btree_iter_verify(iter, n);
bch2_open_buckets_put(c, &n->ob);
+ six_lock_increment(&b->lock, SIX_LOCK_intent);
bch2_btree_iter_node_drop(iter, b);
bch2_btree_iter_node_replace(iter, n);
bch2_btree_node_free_inmem(c, b, iter);