bch2_btree_add_journal_pin(c, b, res.seq);
six_unlock_write(&b->c.lock);
-
- /*
- * b->write_blocked prevented it from being written, so
- * write it now if it needs to be written:
- */
- btree_node_write_if_need(c, b, SIX_LOCK_intent);
- six_unlock_intent(&b->c.lock);
break;
case BTREE_INTERIOR_UPDATING_AS:
bch2_journal_res_put(&c->journal, &res);
bch2_journal_preres_put(&c->journal, &as->journal_preres);
+ /* Do btree write after dropping journal res: */
+ if (b) {
+ /*
+ * b->write_blocked prevented it from being written, so
+ * write it now if it needs to be written:
+ */
+ btree_node_write_if_need(c, b, SIX_LOCK_intent);
+ six_unlock_intent(&b->c.lock);
+ }
+
btree_update_nodes_reachable(as, res.seq);
free_update:
__bch2_btree_update_free(as);