Lines Matching refs:dde

160     ddt_entry_t *dde)  in ddt_object_lookup()  argument
166 ddt->ddt_object[type][class], dde)); in ddt_object_lookup()
171 ddt_entry_t *dde) in ddt_object_prefetch() argument
177 ddt->ddt_object[type][class], dde); in ddt_object_prefetch()
182 ddt_entry_t *dde, dmu_tx_t *tx) in ddt_object_update() argument
187 ddt->ddt_object[type][class], dde, tx)); in ddt_object_update()
192 ddt_entry_t *dde, dmu_tx_t *tx) in ddt_object_remove() argument
197 ddt->ddt_object[type][class], dde, tx)); in ddt_object_remove()
202 uint64_t *walk, ddt_entry_t *dde) in ddt_object_walk() argument
207 ddt->ddt_object[type][class], dde, walk)); in ddt_object_walk()
328 ddt_phys_select(const ddt_entry_t *dde, const blkptr_t *bp) in ddt_phys_select() argument
330 ddt_phys_t *ddp = (ddt_phys_t *)dde->dde_phys; in ddt_phys_select()
341 ddt_phys_total_refcnt(const ddt_entry_t *dde) in ddt_phys_total_refcnt() argument
346 refcnt += dde->dde_phys[p].ddp_refcnt; in ddt_phys_total_refcnt()
352 ddt_stat_generate(ddt_t *ddt, ddt_entry_t *dde, ddt_stat_t *dds) in ddt_stat_generate() argument
355 ddt_phys_t *ddp = dde->dde_phys; in ddt_stat_generate()
356 ddt_key_t *ddk = &dde->dde_key; in ddt_stat_generate()
398 ddt_stat_update(ddt_t *ddt, ddt_entry_t *dde, uint64_t neg) in ddt_stat_update() argument
404 ddt_stat_generate(ddt, dde, &dds); in ddt_stat_update()
409 ddh = &ddt->ddt_histogram[dde->dde_type][dde->dde_class]; in ddt_stat_update()
516 ddt_ditto_copies_needed(ddt_t *ddt, ddt_entry_t *dde, ddt_phys_t *ddp_willref) in ddt_ditto_copies_needed() argument
525 ddt_phys_t *ddp = &dde->dde_phys[p]; in ddt_ditto_copies_needed()
526 zio_t *zio = dde->dde_lead_zio[p]; in ddt_ditto_copies_needed()
552 ddt_ditto_copies_present(ddt_entry_t *dde) in ddt_ditto_copies_present() argument
554 ddt_phys_t *ddp = &dde->dde_phys[DDT_PHYS_DITTO]; in ddt_ditto_copies_present()
636 ddt_entry_t *dde; in ddt_alloc() local
638 dde = kmem_zalloc(sizeof (ddt_entry_t), KM_SLEEP); in ddt_alloc()
639 cv_init(&dde->dde_cv, NULL, CV_DEFAULT, NULL); in ddt_alloc()
641 dde->dde_key = *ddk; in ddt_alloc()
643 return (dde); in ddt_alloc()
647 ddt_free(ddt_entry_t *dde) in ddt_free() argument
649 ASSERT(!dde->dde_loading); in ddt_free()
652 ASSERT(dde->dde_lead_zio[p] == NULL); in ddt_free()
654 if (dde->dde_repair_data != NULL) in ddt_free()
655 zio_buf_free(dde->dde_repair_data, in ddt_free()
656 DDK_GET_PSIZE(&dde->dde_key)); in ddt_free()
658 cv_destroy(&dde->dde_cv); in ddt_free()
659 kmem_free(dde, sizeof (*dde)); in ddt_free()
663 ddt_remove(ddt_t *ddt, ddt_entry_t *dde) in ddt_remove() argument
667 avl_remove(&ddt->ddt_tree, dde); in ddt_remove()
668 ddt_free(dde); in ddt_remove()
674 ddt_entry_t *dde, dde_search; in ddt_lookup() local
684 dde = avl_find(&ddt->ddt_tree, &dde_search, &where); in ddt_lookup()
685 if (dde == NULL) { in ddt_lookup()
688 dde = ddt_alloc(&dde_search.dde_key); in ddt_lookup()
689 avl_insert(&ddt->ddt_tree, dde, where); in ddt_lookup()
692 while (dde->dde_loading) in ddt_lookup()
693 cv_wait(&dde->dde_cv, &ddt->ddt_lock); in ddt_lookup()
695 if (dde->dde_loaded) in ddt_lookup()
696 return (dde); in ddt_lookup()
698 dde->dde_loading = B_TRUE; in ddt_lookup()
706 error = ddt_object_lookup(ddt, type, class, dde); in ddt_lookup()
718 ASSERT(dde->dde_loaded == B_FALSE); in ddt_lookup()
719 ASSERT(dde->dde_loading == B_TRUE); in ddt_lookup()
721 dde->dde_type = type; /* will be DDT_TYPES if no entry found */ in ddt_lookup()
722 dde->dde_class = class; /* will be DDT_CLASSES if no entry found */ in ddt_lookup()
723 dde->dde_loaded = B_TRUE; in ddt_lookup()
724 dde->dde_loading = B_FALSE; in ddt_lookup()
727 ddt_stat_update(ddt, dde, -1ULL); in ddt_lookup()
729 cv_broadcast(&dde->dde_cv); in ddt_lookup()
731 return (dde); in ddt_lookup()
738 ddt_entry_t dde; in ddt_prefetch() local
749 ddt_key_fill(&dde.dde_key, bp); in ddt_prefetch()
753 ddt_object_prefetch(ddt, type, class, &dde); in ddt_prefetch()
865 ddt_entry_t dde; in ddt_class_contains() local
875 ddt_key_fill(&dde.dde_key, bp); in ddt_class_contains()
879 if (ddt_object_lookup(ddt, type, class, &dde) == 0) in ddt_class_contains()
889 ddt_entry_t *dde; in ddt_repair_start() local
893 dde = ddt_alloc(&ddk); in ddt_repair_start()
903 ddt_object_lookup(ddt, type, class, dde) == 0) in ddt_repair_start()
904 return (dde); in ddt_repair_start()
908 bzero(dde->dde_phys, sizeof (dde->dde_phys)); in ddt_repair_start()
910 return (dde); in ddt_repair_start()
914 ddt_repair_done(ddt_t *ddt, ddt_entry_t *dde) in ddt_repair_done() argument
920 if (dde->dde_repair_data != NULL && spa_writeable(ddt->ddt_spa) && in ddt_repair_done()
921 avl_find(&ddt->ddt_repair_tree, dde, &where) == NULL) in ddt_repair_done()
922 avl_insert(&ddt->ddt_repair_tree, dde, where); in ddt_repair_done()
924 ddt_free(dde); in ddt_repair_done()
938 ddt_repair_entry(ddt_t *ddt, ddt_entry_t *dde, ddt_entry_t *rdde, zio_t *rio) in ddt_repair_entry() argument
940 ddt_phys_t *ddp = dde->dde_phys; in ddt_repair_entry()
942 ddt_key_t *ddk = &dde->dde_key; in ddt_repair_entry()
968 ddt_entry_t *dde, *rdde_next, *rdde; in ddt_repair_table() local
981 dde = ddt_repair_start(ddt, &blk); in ddt_repair_table()
982 ddt_repair_entry(ddt, dde, rdde, rio); in ddt_repair_table()
983 ddt_repair_done(ddt, dde); in ddt_repair_table()
990 ddt_sync_entry(ddt_t *ddt, ddt_entry_t *dde, dmu_tx_t *tx, uint64_t txg) in ddt_sync_entry() argument
993 ddt_phys_t *ddp = dde->dde_phys; in ddt_sync_entry()
994 ddt_key_t *ddk = &dde->dde_key; in ddt_sync_entry()
995 enum ddt_type otype = dde->dde_type; in ddt_sync_entry()
997 enum ddt_class oclass = dde->dde_class; in ddt_sync_entry()
1001 ASSERT(dde->dde_loaded); in ddt_sync_entry()
1002 ASSERT(!dde->dde_loading); in ddt_sync_entry()
1005 ASSERT(dde->dde_lead_zio[p] == NULL); in ddt_sync_entry()
1012 if (ddt_ditto_copies_needed(ddt, dde, NULL) == 0) in ddt_sync_entry()
1021 if (dde->dde_phys[DDT_PHYS_DITTO].ddp_phys_birth != 0) in ddt_sync_entry()
1030 VERIFY(ddt_object_remove(ddt, otype, oclass, dde, tx) == 0); in ddt_sync_entry()
1031 ASSERT(ddt_object_lookup(ddt, otype, oclass, dde) == ENOENT); in ddt_sync_entry()
1035 dde->dde_type = ntype; in ddt_sync_entry()
1036 dde->dde_class = nclass; in ddt_sync_entry()
1037 ddt_stat_update(ddt, dde, 0); in ddt_sync_entry()
1040 VERIFY(ddt_object_update(ddt, ntype, nclass, dde, tx) == 0); in ddt_sync_entry()
1051 ddt->ddt_checksum, dde, tx); in ddt_sync_entry()
1060 ddt_entry_t *dde; in ddt_sync_table() local
1074 while ((dde = avl_destroy_nodes(&ddt->ddt_tree, &cookie)) != NULL) { in ddt_sync_table()
1075 ddt_sync_entry(ddt, dde, tx, txg); in ddt_sync_table()
1076 ddt_free(dde); in ddt_sync_table()
1122 ddt_walk(spa_t *spa, ddt_bookmark_t *ddb, ddt_entry_t *dde) in ddt_walk() argument
1133 &ddb->ddb_cursor, dde); in ddt_walk()
1135 dde->dde_type = ddb->ddb_type; in ddt_walk()
1136 dde->dde_class = ddb->ddb_class; in ddt_walk()