diff --git a/fs/bcachefs/btree_update_interior.c b/fs/bcachefs/btree_update_interior.c index d5bea4f8ea02..8b31f4d63094 100644 --- a/fs/bcachefs/btree_update_interior.c +++ b/fs/bcachefs/btree_update_interior.c @@ -725,7 +725,7 @@ static void btree_update_nodes_written(struct closure *cl) bch2_journal_res_put(&c->journal, &res); bch2_journal_preres_put(&c->journal, &as->journal_preres); - +free_update: /* Do btree write after dropping journal res: */ if (b) { /* @@ -736,8 +736,9 @@ static void btree_update_nodes_written(struct closure *cl) six_unlock_intent(&b->c.lock); } - btree_update_nodes_reachable(as, res.seq); -free_update: + if (!ret) + btree_update_nodes_reachable(as, res.seq); + __bch2_btree_update_free(as); /* * for flush_held_btree_writes() waiting on updates to flush or