Lines Matching full:as
256 static void bch2_btree_node_free_never_used(struct btree_update *as, in bch2_btree_node_free_never_used() argument
260 struct bch_fs *c = as->c; in bch2_btree_node_free_never_used()
261 struct prealloc_nodes *p = &as->prealloc_nodes[b->c.lock.readers != NULL]; in bch2_btree_node_free_never_used()
264 BUG_ON(b->will_make_reachable != (1UL|(unsigned long) as)); in bch2_btree_node_free_never_used()
267 closure_put(&as->cl); in bch2_btree_node_free_never_used()
364 static struct btree *bch2_btree_node_alloc(struct btree_update *as, in bch2_btree_node_alloc() argument
368 struct bch_fs *c = as->c; in bch2_btree_node_alloc()
370 struct prealloc_nodes *p = &as->prealloc_nodes[!!level]; in bch2_btree_node_alloc()
387 b->c.btree_id = as->btree_id; in bch2_btree_node_alloc()
394 SET_BTREE_NODE_ID(b->data, as->btree_id); in bch2_btree_node_alloc()
409 ret = bch2_btree_node_hash_insert(&c->btree_cache, b, level, as->btree_id); in bch2_btree_node_alloc()
430 static struct btree *bch2_btree_node_alloc_replacement(struct btree_update *as, in bch2_btree_node_alloc_replacement() argument
434 struct btree *n = bch2_btree_node_alloc(as, trans, b->c.level); in bch2_btree_node_alloc_replacement()
441 if (!bch2_btree_node_format_fits(as->c, b, b->nr, &format)) in bch2_btree_node_alloc_replacement()
452 bch2_btree_sort_into(as->c, n, b); in bch2_btree_node_alloc_replacement()
458 static struct btree *__btree_root_alloc(struct btree_update *as, in __btree_root_alloc() argument
461 struct btree *b = bch2_btree_node_alloc(as, trans, level); in __btree_root_alloc()
473 static void bch2_btree_reserve_put(struct btree_update *as, struct btree_trans *trans) in bch2_btree_reserve_put() argument
475 struct bch_fs *c = as->c; in bch2_btree_reserve_put()
478 for (p = as->prealloc_nodes; in bch2_btree_reserve_put()
479 p < as->prealloc_nodes + ARRAY_SIZE(as->prealloc_nodes); in bch2_btree_reserve_put()
509 struct btree_update *as, in bch2_btree_reserve_get() argument
529 struct prealloc_nodes *p = as->prealloc_nodes + interior; in bch2_btree_reserve_get()
532 b = __bch2_btree_node_alloc(trans, &as->disk_res, cl, in bch2_btree_reserve_get()
549 static void bch2_btree_update_free(struct btree_update *as, struct btree_trans *trans) in bch2_btree_update_free() argument
551 struct bch_fs *c = as->c; in bch2_btree_update_free()
553 if (as->took_gc_lock) in bch2_btree_update_free()
555 as->took_gc_lock = false; in bch2_btree_update_free()
557 bch2_journal_pin_drop(&c->journal, &as->journal); in bch2_btree_update_free()
558 bch2_journal_pin_flush(&c->journal, &as->journal); in bch2_btree_update_free()
559 bch2_disk_reservation_put(c, &as->disk_res); in bch2_btree_update_free()
560 bch2_btree_reserve_put(as, trans); in bch2_btree_update_free()
563 as->start_time); in bch2_btree_update_free()
566 list_del(&as->unwritten_list); in bch2_btree_update_free()
567 list_del(&as->list); in bch2_btree_update_free()
569 closure_debug_destroy(&as->cl); in bch2_btree_update_free()
570 mempool_free(as, &c->btree_interior_update_pool); in bch2_btree_update_free()
581 static void btree_update_add_key(struct btree_update *as, in btree_update_add_key() argument
587 ARRAY_SIZE(as->_old_keys)); in btree_update_add_key()
595 static bool btree_update_new_nodes_marked_sb(struct btree_update *as) in btree_update_new_nodes_marked_sb() argument
597 for_each_keylist_key(&as->new_keys, k) in btree_update_new_nodes_marked_sb()
598 if (!bch2_dev_btree_bitmap_marked(as->c, bkey_i_to_s_c(k))) in btree_update_new_nodes_marked_sb()
603 static void btree_update_new_nodes_mark_sb(struct btree_update *as) in btree_update_new_nodes_mark_sb() argument
605 struct bch_fs *c = as->c; in btree_update_new_nodes_mark_sb()
608 for_each_keylist_key(&as->new_keys, k) in btree_update_new_nodes_mark_sb()
620 struct btree_update *as) in btree_update_nodes_written_trans() argument
622 struct jset_entry *e = bch2_trans_jset_entry_alloc(trans, as->journal_u64s); in btree_update_nodes_written_trans()
627 memcpy(e, as->journal_entries, as->journal_u64s * sizeof(u64)); in btree_update_nodes_written_trans()
629 trans->journal_pin = &as->journal; in btree_update_nodes_written_trans()
631 for_each_keylist_key(&as->old_keys, k) { in btree_update_nodes_written_trans()
634 ret = bch2_key_trigger_old(trans, as->btree_id, level, bkey_i_to_s_c(k), in btree_update_nodes_written_trans()
640 for_each_keylist_key(&as->new_keys, k) { in btree_update_nodes_written_trans()
643 ret = bch2_key_trigger_new(trans, as->btree_id, level, bkey_i_to_s(k), in btree_update_nodes_written_trans()
652 static void btree_update_nodes_written(struct btree_update *as) in btree_update_nodes_written() argument
654 struct bch_fs *c = as->c; in btree_update_nodes_written()
664 * node here, but it won't have been marked as allocated and we'll see in btree_update_nodes_written()
672 if (!btree_update_new_nodes_marked_sb(as)) in btree_update_nodes_written()
673 btree_update_new_nodes_mark_sb(as); in btree_update_nodes_written()
679 for (i = 0; i < as->nr_old_nodes; i++) { in btree_update_nodes_written()
682 b = as->old_nodes[i]; in btree_update_nodes_written()
690 if (seq == as->old_nodes_seq[i]) in btree_update_nodes_written()
706 * which may require allocations as well. in btree_update_nodes_written()
708 ret = commit_do(trans, &as->disk_res, &journal_seq, in btree_update_nodes_written()
713 btree_update_nodes_written_trans(trans, as)); in btree_update_nodes_written()
733 * to free as->b and calling btree_update_reparent() on us - we'll in btree_update_nodes_written()
736 b = READ_ONCE(as->b); in btree_update_nodes_written()
751 as->btree_id, b->c.level, b->key.k.p); in btree_update_nodes_written()
762 list_del(&as->write_blocked_list); in btree_update_nodes_written()
770 if (as->b == b) { in btree_update_nodes_written()
802 bch2_journal_pin_drop(&c->journal, &as->journal); in btree_update_nodes_written()
805 for (i = 0; i < as->nr_new_nodes; i++) { in btree_update_nodes_written()
806 b = as->new_nodes[i]; in btree_update_nodes_written()
808 BUG_ON(b->will_make_reachable != (unsigned long) as); in btree_update_nodes_written()
814 for (i = 0; i < as->nr_new_nodes; i++) { in btree_update_nodes_written()
815 b = as->new_nodes[i]; in btree_update_nodes_written()
822 for (i = 0; i < as->nr_open_buckets; i++) in btree_update_nodes_written()
823 bch2_open_bucket_put(c, c->open_buckets + as->open_buckets[i]); in btree_update_nodes_written()
825 bch2_btree_update_free(as, trans); in btree_update_nodes_written()
833 struct btree_update *as; in btree_interior_update_work() local
837 as = list_first_entry_or_null(&c->btree_interior_updates_unwritten, in btree_interior_update_work()
839 if (as && !as->nodes_written) in btree_interior_update_work()
840 as = NULL; in btree_interior_update_work()
843 if (!as) in btree_interior_update_work()
846 btree_update_nodes_written(as); in btree_interior_update_work()
852 closure_type(as, struct btree_update, cl); in CLOSURE_CALLBACK()
853 struct bch_fs *c = as->c; in CLOSURE_CALLBACK()
856 as->nodes_written = true; in CLOSURE_CALLBACK()
864 * block @b from being written until @as completes
866 static void btree_update_updated_node(struct btree_update *as, struct btree *b) in btree_update_updated_node() argument
868 struct bch_fs *c = as->c; in btree_update_updated_node()
870 BUG_ON(as->mode != BTREE_UPDATE_none); in btree_update_updated_node()
871 BUG_ON(as->update_level_end < b->c.level); in btree_update_updated_node()
876 list_add_tail(&as->unwritten_list, &c->btree_interior_updates_unwritten); in btree_update_updated_node()
878 as->mode = BTREE_UPDATE_node; in btree_update_updated_node()
879 as->b = b; in btree_update_updated_node()
880 as->update_level_end = b->c.level; in btree_update_updated_node()
883 list_add(&as->write_blocked_list, &b->write_blocked); in btree_update_updated_node()
894 static void btree_update_reparent(struct btree_update *as, in btree_update_reparent() argument
897 struct bch_fs *c = as->c; in btree_update_reparent()
904 bch2_journal_pin_copy(&c->journal, &as->journal, &child->journal, in btree_update_reparent()
908 static void btree_update_updated_root(struct btree_update *as, struct btree *b) in btree_update_updated_root() argument
911 struct bch_fs *c = as->c; in btree_update_updated_root()
913 BUG_ON(as->mode != BTREE_UPDATE_none); in btree_update_updated_root()
915 BUG_ON(as->journal_u64s + jset_u64s(insert->k.u64s) > in btree_update_updated_root()
916 ARRAY_SIZE(as->journal_entries)); in btree_update_updated_root()
918 as->journal_u64s += in btree_update_updated_root()
919 journal_entry_set((void *) &as->journal_entries[as->journal_u64s], in btree_update_updated_root()
925 list_add_tail(&as->unwritten_list, &c->btree_interior_updates_unwritten); in btree_update_updated_root()
927 as->mode = BTREE_UPDATE_root; in btree_update_updated_root()
934 * This causes @as to wait on @b to be written, before it gets to
940 * And it adds @b to the list of @as's new nodes, so that we can update sector
943 static void bch2_btree_update_add_new_node(struct btree_update *as, struct btree *b) in bch2_btree_update_add_new_node() argument
945 struct bch_fs *c = as->c; in bch2_btree_update_add_new_node()
947 closure_get(&as->cl); in bch2_btree_update_add_new_node()
950 BUG_ON(as->nr_new_nodes >= ARRAY_SIZE(as->new_nodes)); in bch2_btree_update_add_new_node()
953 as->new_nodes[as->nr_new_nodes++] = b; in bch2_btree_update_add_new_node()
954 b->will_make_reachable = 1UL|(unsigned long) as; in bch2_btree_update_add_new_node()
959 btree_update_add_key(as, &as->new_keys, b); in bch2_btree_update_add_new_node()
975 struct btree_update *as; in btree_update_drop_new_node() local
981 * When b->will_make_reachable != 0, it owns a ref on as->cl that's in btree_update_drop_new_node()
987 as = (struct btree_update *) (v & ~1UL); in btree_update_drop_new_node()
989 if (!as) { in btree_update_drop_new_node()
994 for (i = 0; i < as->nr_new_nodes; i++) in btree_update_drop_new_node()
995 if (as->new_nodes[i] == b) in btree_update_drop_new_node()
1000 array_remove_item(as->new_nodes, as->nr_new_nodes, i); in btree_update_drop_new_node()
1004 closure_put(&as->cl); in btree_update_drop_new_node()
1007 static void bch2_btree_update_get_open_buckets(struct btree_update *as, struct btree *b) in bch2_btree_update_get_open_buckets() argument
1010 as->open_buckets[as->nr_open_buckets++] = in bch2_btree_update_get_open_buckets()
1025 static void bch2_btree_interior_update_will_free_node(struct btree_update *as, in bch2_btree_interior_update_will_free_node() argument
1028 struct bch_fs *c = as->c; in bch2_btree_interior_update_will_free_node()
1049 btree_update_reparent(as, p); in bch2_btree_interior_update_will_free_node()
1071 bch2_journal_pin_copy(&c->journal, &as->journal, &w->journal, in bch2_btree_interior_update_will_free_node()
1076 bch2_journal_pin_copy(&c->journal, &as->journal, &w->journal, in bch2_btree_interior_update_will_free_node()
1093 btree_update_add_key(as, &as->old_keys, b); in bch2_btree_interior_update_will_free_node()
1095 as->old_nodes[as->nr_old_nodes] = b; in bch2_btree_interior_update_will_free_node()
1096 as->old_nodes_seq[as->nr_old_nodes] = b->data->keys.seq; in bch2_btree_interior_update_will_free_node()
1097 as->nr_old_nodes++; in bch2_btree_interior_update_will_free_node()
1100 static void bch2_btree_update_done(struct btree_update *as, struct btree_trans *trans) in bch2_btree_update_done() argument
1102 struct bch_fs *c = as->c; in bch2_btree_update_done()
1103 u64 start_time = as->start_time; in bch2_btree_update_done()
1105 BUG_ON(as->mode == BTREE_UPDATE_none); in bch2_btree_update_done()
1107 if (as->took_gc_lock) in bch2_btree_update_done()
1108 up_read(&as->c->gc_lock); in bch2_btree_update_done()
1109 as->took_gc_lock = false; in bch2_btree_update_done()
1111 bch2_btree_reserve_put(as, trans); in bch2_btree_update_done()
1113 continue_at(&as->cl, btree_update_set_nodes_written, in bch2_btree_update_done()
1114 as->c->btree_interior_update_worker); in bch2_btree_update_done()
1125 struct btree_update *as; in bch2_btree_update_start() local
1190 as = mempool_alloc(&c->btree_interior_update_pool, GFP_NOFS); in bch2_btree_update_start()
1191 memset(as, 0, sizeof(*as)); in bch2_btree_update_start()
1192 closure_init(&as->cl, NULL); in bch2_btree_update_start()
1193 as->c = c; in bch2_btree_update_start()
1194 as->start_time = start_time; in bch2_btree_update_start()
1195 as->ip_started = _RET_IP_; in bch2_btree_update_start()
1196 as->mode = BTREE_UPDATE_none; in bch2_btree_update_start()
1197 as->flags = flags; in bch2_btree_update_start()
1198 as->took_gc_lock = true; in bch2_btree_update_start()
1199 as->btree_id = path->btree_id; in bch2_btree_update_start()
1200 as->update_level_start = level_start; in bch2_btree_update_start()
1201 as->update_level_end = level_end; in bch2_btree_update_start()
1202 INIT_LIST_HEAD(&as->list); in bch2_btree_update_start()
1203 INIT_LIST_HEAD(&as->unwritten_list); in bch2_btree_update_start()
1204 INIT_LIST_HEAD(&as->write_blocked_list); in bch2_btree_update_start()
1205 bch2_keylist_init(&as->old_keys, as->_old_keys); in bch2_btree_update_start()
1206 bch2_keylist_init(&as->new_keys, as->_new_keys); in bch2_btree_update_start()
1207 bch2_keylist_init(&as->parent_keys, as->inline_keys); in bch2_btree_update_start()
1210 list_add_tail(&as->list, &c->btree_interior_update_list); in bch2_btree_update_start()
1225 ret = bch2_disk_reservation_get(c, &as->disk_res, in bch2_btree_update_start()
1232 ret = bch2_btree_reserve_get(trans, as, nr_nodes, flags, NULL); in bch2_btree_update_start()
1251 ret = bch2_btree_reserve_get(trans, as, nr_nodes, flags, &cl); in bch2_btree_update_start()
1269 return as; in bch2_btree_update_start()
1271 bch2_btree_update_free(as, trans); in bch2_btree_update_start()
1295 static int bch2_btree_set_root(struct btree_update *as, in bch2_btree_set_root() argument
1301 struct bch_fs *c = as->c; in bch2_btree_set_root()
1321 btree_update_updated_root(as, b); in bch2_btree_set_root()
1336 static void bch2_insert_fixup_btree_ptr(struct btree_update *as, in bch2_insert_fixup_btree_ptr() argument
1343 struct bch_fs *c = as->c; in bch2_insert_fixup_btree_ptr()
1366 BUG_ON(as->journal_u64s + jset_u64s(insert->k.u64s) > in bch2_insert_fixup_btree_ptr()
1367 ARRAY_SIZE(as->journal_entries)); in bch2_insert_fixup_btree_ptr()
1369 as->journal_u64s += in bch2_insert_fixup_btree_ptr()
1370 journal_entry_set((void *) &as->journal_entries[as->journal_u64s], in bch2_insert_fixup_btree_ptr()
1395 bch2_btree_insert_keys_interior(struct btree_update *as, in bch2_btree_insert_keys_interior() argument
1414 bch2_insert_fixup_btree_ptr(as, trans, path, b, &node_iter, insert); in bch2_btree_insert_keys_interior()
1446 static void __btree_split_node(struct btree_update *as, in __btree_split_node() argument
1564 static void btree_split_insert_keys(struct btree_update *as, in btree_split_insert_keys() argument
1578 bch2_btree_insert_keys_interior(as, trans, path, b, node_iter, keys); in btree_split_insert_keys()
1582 static int btree_split(struct btree_update *as, struct btree_trans *trans, in btree_split() argument
1586 struct bch_fs *c = as->c; in btree_split()
1606 n[0] = n1 = bch2_btree_node_alloc(as, trans, b->c.level); in btree_split()
1607 n[1] = n2 = bch2_btree_node_alloc(as, trans, b->c.level); in btree_split()
1609 __btree_split_node(as, trans, b, n, keys); in btree_split()
1612 btree_split_insert_keys(as, trans, path, n1, keys); in btree_split()
1613 btree_split_insert_keys(as, trans, path, n2, keys); in btree_split()
1620 bch2_btree_update_add_new_node(as, n1); in btree_split()
1621 bch2_btree_update_add_new_node(as, n2); in btree_split()
1625 path1 = bch2_path_get_unlocked_mut(trans, as->btree_id, n1->c.level, n1->key.k.p); in btree_split()
1630 path2 = bch2_path_get_unlocked_mut(trans, as->btree_id, n2->c.level, n2->key.k.p); in btree_split()
1640 bch2_keylist_add(&as->parent_keys, &n1->key); in btree_split()
1641 bch2_keylist_add(&as->parent_keys, &n2->key); in btree_split()
1645 n3 = __btree_root_alloc(as, trans, b->c.level + 1); in btree_split()
1647 bch2_btree_update_add_new_node(as, n3); in btree_split()
1659 btree_split_insert_keys(as, trans, path, n3, &as->parent_keys); in btree_split()
1664 n1 = bch2_btree_node_alloc_replacement(as, trans, b); in btree_split()
1667 btree_split_insert_keys(as, trans, path, n1, keys); in btree_split()
1672 bch2_btree_update_add_new_node(as, n1); in btree_split()
1675 path1 = bch2_path_get_unlocked_mut(trans, as->btree_id, n1->c.level, n1->key.k.p); in btree_split()
1681 bch2_keylist_add(&as->parent_keys, &n1->key); in btree_split()
1688 ret = bch2_btree_insert_node(as, trans, path, parent, &as->parent_keys); in btree_split()
1690 ret = bch2_btree_set_root(as, trans, trans->paths + path, n3, false); in btree_split()
1693 ret = bch2_btree_set_root(as, trans, trans->paths + path, n1, false); in btree_split()
1699 bch2_btree_interior_update_will_free_node(as, b); in btree_split()
1702 bch2_btree_update_get_open_buckets(as, n3); in btree_split()
1706 bch2_btree_update_get_open_buckets(as, n2); in btree_split()
1709 bch2_btree_update_get_open_buckets(as, n1); in btree_split()
1750 bch2_btree_node_free_never_used(as, trans, n3); in btree_split()
1752 bch2_btree_node_free_never_used(as, trans, n2); in btree_split()
1753 bch2_btree_node_free_never_used(as, trans, n1); in btree_split()
1760 * @as: btree_update object
1768 * Inserts as many keys as it can into a given btree node, splitting it if full.
1772 static int bch2_btree_insert_node(struct btree_update *as, struct btree_trans *trans, in bch2_btree_insert_node() argument
1776 struct bch_fs *c = as->c; in bch2_btree_insert_node()
1787 BUG_ON(!as || as->b); in bch2_btree_insert_node()
1807 bch2_btree_insert_keys_interior(as, trans, path, b, in bch2_btree_insert_node()
1827 btree_update_updated_node(as, b); in bch2_btree_insert_node()
1835 if (b->c.level >= as->update_level_end) { in bch2_btree_insert_node()
1840 return btree_split(as, trans, path_idx, b, keys); in bch2_btree_insert_node()
1849 struct btree_update *as; in bch2_btree_split_leaf() local
1853 as = bch2_btree_update_start(trans, trans->paths + path, in bch2_btree_split_leaf()
1856 if (IS_ERR(as)) in bch2_btree_split_leaf()
1857 return PTR_ERR(as); in bch2_btree_split_leaf()
1859 ret = btree_split(as, trans, path, b, NULL); in bch2_btree_split_leaf()
1861 bch2_btree_update_free(as, trans); in bch2_btree_split_leaf()
1865 bch2_btree_update_done(as, trans); in bch2_btree_split_leaf()
1875 static void __btree_increase_depth(struct btree_update *as, struct btree_trans *trans, in __btree_increase_depth() argument
1878 struct bch_fs *c = as->c; in __btree_increase_depth()
1884 n = __btree_root_alloc(as, trans, b->c.level + 1); in __btree_increase_depth()
1886 bch2_btree_update_add_new_node(as, n); in __btree_increase_depth()
1898 bch2_keylist_add(&as->parent_keys, &b->key); in __btree_increase_depth()
1899 btree_split_insert_keys(as, trans, path_idx, n, &as->parent_keys); in __btree_increase_depth()
1901 int ret = bch2_btree_set_root(as, trans, path, n, true); in __btree_increase_depth()
1904 bch2_btree_update_get_open_buckets(as, n); in __btree_increase_depth()
1924 struct btree_update *as = in bch2_btree_increase_depth() local
1926 if (IS_ERR(as)) in bch2_btree_increase_depth()
1927 return PTR_ERR(as); in bch2_btree_increase_depth()
1929 __btree_increase_depth(as, trans, path); in bch2_btree_increase_depth()
1930 bch2_btree_update_done(as, trans); in bch2_btree_increase_depth()
1941 struct btree_update *as; in __bch2_foreground_maybe_merge() local
2049 as = bch2_btree_update_start(trans, trans->paths + path, level, false, in __bch2_foreground_maybe_merge()
2051 ret = PTR_ERR_OR_ZERO(as); in __bch2_foreground_maybe_merge()
2057 n = bch2_btree_node_alloc(as, trans, b->c.level); in __bch2_foreground_maybe_merge()
2073 bch2_btree_update_add_new_node(as, n); in __bch2_foreground_maybe_merge()
2083 bch2_keylist_add(&as->parent_keys, &delete); in __bch2_foreground_maybe_merge()
2084 bch2_keylist_add(&as->parent_keys, &n->key); in __bch2_foreground_maybe_merge()
2088 ret = bch2_btree_insert_node(as, trans, path, parent, &as->parent_keys); in __bch2_foreground_maybe_merge()
2092 bch2_btree_interior_update_will_free_node(as, b); in __bch2_foreground_maybe_merge()
2093 bch2_btree_interior_update_will_free_node(as, m); in __bch2_foreground_maybe_merge()
2097 bch2_btree_update_get_open_buckets(as, n); in __bch2_foreground_maybe_merge()
2109 bch2_btree_update_done(as, trans); in __bch2_foreground_maybe_merge()
2124 bch2_btree_node_free_never_used(as, trans, n); in __bch2_foreground_maybe_merge()
2125 bch2_btree_update_free(as, trans); in __bch2_foreground_maybe_merge()
2136 struct btree_update *as; in bch2_btree_node_rewrite() local
2144 as = bch2_btree_update_start(trans, path, b->c.level, false, flags); in bch2_btree_node_rewrite()
2145 ret = PTR_ERR_OR_ZERO(as); in bch2_btree_node_rewrite()
2149 n = bch2_btree_node_alloc_replacement(as, trans, b); in bch2_btree_node_rewrite()
2152 bch2_btree_update_add_new_node(as, n); in bch2_btree_node_rewrite()
2163 bch2_keylist_add(&as->parent_keys, &n->key); in bch2_btree_node_rewrite()
2164 ret = bch2_btree_insert_node(as, trans, iter->path, parent, &as->parent_keys); in bch2_btree_node_rewrite()
2166 ret = bch2_btree_set_root(as, trans, btree_iter_path(trans, iter), n, false); in bch2_btree_node_rewrite()
2172 bch2_btree_interior_update_will_free_node(as, b); in bch2_btree_node_rewrite()
2174 bch2_btree_update_get_open_buckets(as, n); in bch2_btree_node_rewrite()
2182 bch2_btree_update_done(as, trans); in bch2_btree_node_rewrite()
2189 bch2_btree_node_free_never_used(as, trans, n); in bch2_btree_node_rewrite()
2190 bch2_btree_update_free(as, trans); in bch2_btree_node_rewrite()
2593 static void bch2_btree_update_to_text(struct printbuf *out, struct btree_update *as) in bch2_btree_update_to_text() argument
2595 prt_printf(out, "%ps: ", (void *) as->ip_started); in bch2_btree_update_to_text()
2596 bch2_trans_commit_flags_to_text(out, as->flags); in bch2_btree_update_to_text()
2599 bch2_btree_id_to_text(out, as->btree_id); in bch2_btree_update_to_text()
2601 as->update_level_start, in bch2_btree_update_to_text()
2602 as->update_level_end, in bch2_btree_update_to_text()
2603 bch2_btree_update_modes[as->mode], in bch2_btree_update_to_text()
2604 as->nodes_written, in bch2_btree_update_to_text()
2605 closure_nr_remaining(&as->cl), in bch2_btree_update_to_text()
2606 as->journal.seq); in bch2_btree_update_to_text()
2611 struct btree_update *as; in bch2_btree_updates_to_text() local
2614 list_for_each_entry(as, &c->btree_interior_update_list, list) in bch2_btree_updates_to_text()
2615 bch2_btree_update_to_text(out, as); in bch2_btree_updates_to_text()