Lines Matching refs:dde

173     ddt_entry_t *dde)  in ddt_object_lookup()  argument
179 ddt->ddt_object[type][class], dde)); in ddt_object_lookup()
184 ddt_entry_t *dde) in ddt_object_prefetch() argument
190 ddt->ddt_object[type][class], dde); in ddt_object_prefetch()
195 ddt_entry_t *dde, dmu_tx_t *tx) in ddt_object_update() argument
200 ddt->ddt_object[type][class], dde, tx)); in ddt_object_update()
205 ddt_entry_t *dde, dmu_tx_t *tx) in ddt_object_remove() argument
210 ddt->ddt_object[type][class], dde, tx)); in ddt_object_remove()
215 uint64_t *walk, ddt_entry_t *dde) in ddt_object_walk() argument
220 ddt->ddt_object[type][class], dde, walk)); in ddt_object_walk()
341 ddt_phys_select(const ddt_entry_t *dde, const blkptr_t *bp) in ddt_phys_select() argument
343 ddt_phys_t *ddp = (ddt_phys_t *)dde->dde_phys; in ddt_phys_select()
354 ddt_phys_total_refcnt(const ddt_entry_t *dde) in ddt_phys_total_refcnt() argument
359 refcnt += dde->dde_phys[p].ddp_refcnt; in ddt_phys_total_refcnt()
365 ddt_stat_generate(ddt_t *ddt, ddt_entry_t *dde, ddt_stat_t *dds) in ddt_stat_generate() argument
368 ddt_phys_t *ddp = dde->dde_phys; in ddt_stat_generate()
369 ddt_key_t *ddk = &dde->dde_key; in ddt_stat_generate()
411 ddt_stat_update(ddt_t *ddt, ddt_entry_t *dde, uint64_t neg) in ddt_stat_update() argument
417 ddt_stat_generate(ddt, dde, &dds); in ddt_stat_update()
422 ddh = &ddt->ddt_histogram[dde->dde_type][dde->dde_class]; in ddt_stat_update()
529 ddt_ditto_copies_needed(ddt_t *ddt, ddt_entry_t *dde, ddt_phys_t *ddp_willref) in ddt_ditto_copies_needed() argument
538 ddt_phys_t *ddp = &dde->dde_phys[p]; in ddt_ditto_copies_needed()
539 zio_t *zio = dde->dde_lead_zio[p]; in ddt_ditto_copies_needed()
565 ddt_ditto_copies_present(ddt_entry_t *dde) in ddt_ditto_copies_present() argument
567 ddt_phys_t *ddp = &dde->dde_phys[DDT_PHYS_DITTO]; in ddt_ditto_copies_present()
649 ddt_entry_t *dde; in ddt_alloc() local
651 dde = kmem_zalloc(sizeof (ddt_entry_t), KM_SLEEP); in ddt_alloc()
652 cv_init(&dde->dde_cv, NULL, CV_DEFAULT, NULL); in ddt_alloc()
654 dde->dde_key = *ddk; in ddt_alloc()
656 return (dde); in ddt_alloc()
660 ddt_free(ddt_entry_t *dde) in ddt_free() argument
662 ASSERT(!dde->dde_loading); in ddt_free()
665 ASSERT(dde->dde_lead_zio[p] == NULL); in ddt_free()
667 if (dde->dde_repair_data != NULL) in ddt_free()
668 zio_buf_free(dde->dde_repair_data, in ddt_free()
669 DDK_GET_PSIZE(&dde->dde_key)); in ddt_free()
671 cv_destroy(&dde->dde_cv); in ddt_free()
672 kmem_free(dde, sizeof (*dde)); in ddt_free()
676 ddt_remove(ddt_t *ddt, ddt_entry_t *dde) in ddt_remove() argument
680 avl_remove(&ddt->ddt_tree, dde); in ddt_remove()
681 ddt_free(dde); in ddt_remove()
687 ddt_entry_t *dde, dde_search; in ddt_lookup() local
697 dde = avl_find(&ddt->ddt_tree, &dde_search, &where); in ddt_lookup()
698 if (dde == NULL) { in ddt_lookup()
701 dde = ddt_alloc(&dde_search.dde_key); in ddt_lookup()
702 avl_insert(&ddt->ddt_tree, dde, where); in ddt_lookup()
705 while (dde->dde_loading) in ddt_lookup()
706 cv_wait(&dde->dde_cv, &ddt->ddt_lock); in ddt_lookup()
708 if (dde->dde_loaded) in ddt_lookup()
709 return (dde); in ddt_lookup()
711 dde->dde_loading = B_TRUE; in ddt_lookup()
719 error = ddt_object_lookup(ddt, type, class, dde); in ddt_lookup()
731 ASSERT(dde->dde_loaded == B_FALSE); in ddt_lookup()
732 ASSERT(dde->dde_loading == B_TRUE); in ddt_lookup()
734 dde->dde_type = type; /* will be DDT_TYPES if no entry found */ in ddt_lookup()
735 dde->dde_class = class; /* will be DDT_CLASSES if no entry found */ in ddt_lookup()
736 dde->dde_loaded = B_TRUE; in ddt_lookup()
737 dde->dde_loading = B_FALSE; in ddt_lookup()
740 ddt_stat_update(ddt, dde, -1ULL); in ddt_lookup()
742 cv_broadcast(&dde->dde_cv); in ddt_lookup()
744 return (dde); in ddt_lookup()
751 ddt_entry_t dde; in ddt_prefetch() local
762 ddt_key_fill(&dde.dde_key, bp); in ddt_prefetch()
766 ddt_object_prefetch(ddt, type, class, &dde); in ddt_prefetch()
878 ddt_entry_t dde; in ddt_class_contains() local
888 ddt_key_fill(&dde.dde_key, bp); in ddt_class_contains()
892 if (ddt_object_lookup(ddt, type, class, &dde) == 0) in ddt_class_contains()
902 ddt_entry_t *dde; in ddt_repair_start() local
906 dde = ddt_alloc(&ddk); in ddt_repair_start()
916 ddt_object_lookup(ddt, type, class, dde) == 0) in ddt_repair_start()
917 return (dde); in ddt_repair_start()
921 bzero(dde->dde_phys, sizeof (dde->dde_phys)); in ddt_repair_start()
923 return (dde); in ddt_repair_start()
927 ddt_repair_done(ddt_t *ddt, ddt_entry_t *dde) in ddt_repair_done() argument
933 if (dde->dde_repair_data != NULL && spa_writeable(ddt->ddt_spa) && in ddt_repair_done()
934 avl_find(&ddt->ddt_repair_tree, dde, &where) == NULL) in ddt_repair_done()
935 avl_insert(&ddt->ddt_repair_tree, dde, where); in ddt_repair_done()
937 ddt_free(dde); in ddt_repair_done()
951 ddt_repair_entry(ddt_t *ddt, ddt_entry_t *dde, ddt_entry_t *rdde, zio_t *rio) in ddt_repair_entry() argument
953 ddt_phys_t *ddp = dde->dde_phys; in ddt_repair_entry()
955 ddt_key_t *ddk = &dde->dde_key; in ddt_repair_entry()
981 ddt_entry_t *dde, *rdde_next, *rdde; in ddt_repair_table() local
994 dde = ddt_repair_start(ddt, &blk); in ddt_repair_table()
995 ddt_repair_entry(ddt, dde, rdde, rio); in ddt_repair_table()
996 ddt_repair_done(ddt, dde); in ddt_repair_table()
1003 ddt_sync_entry(ddt_t *ddt, ddt_entry_t *dde, dmu_tx_t *tx, uint64_t txg) in ddt_sync_entry() argument
1006 ddt_phys_t *ddp = dde->dde_phys; in ddt_sync_entry()
1007 ddt_key_t *ddk = &dde->dde_key; in ddt_sync_entry()
1008 enum ddt_type otype = dde->dde_type; in ddt_sync_entry()
1010 enum ddt_class oclass = dde->dde_class; in ddt_sync_entry()
1014 ASSERT(dde->dde_loaded); in ddt_sync_entry()
1015 ASSERT(!dde->dde_loading); in ddt_sync_entry()
1018 ASSERT(dde->dde_lead_zio[p] == NULL); in ddt_sync_entry()
1025 if (ddt_ditto_copies_needed(ddt, dde, NULL) == 0) in ddt_sync_entry()
1034 if (dde->dde_phys[DDT_PHYS_DITTO].ddp_phys_birth != 0) in ddt_sync_entry()
1043 VERIFY(ddt_object_remove(ddt, otype, oclass, dde, tx) == 0); in ddt_sync_entry()
1044 ASSERT(ddt_object_lookup(ddt, otype, oclass, dde) == ENOENT); in ddt_sync_entry()
1048 dde->dde_type = ntype; in ddt_sync_entry()
1049 dde->dde_class = nclass; in ddt_sync_entry()
1050 ddt_stat_update(ddt, dde, 0); in ddt_sync_entry()
1053 VERIFY(ddt_object_update(ddt, ntype, nclass, dde, tx) == 0); in ddt_sync_entry()
1064 ddt->ddt_checksum, dde, tx); in ddt_sync_entry()
1073 ddt_entry_t *dde; in ddt_sync_table() local
1087 while ((dde = avl_destroy_nodes(&ddt->ddt_tree, &cookie)) != NULL) { in ddt_sync_table()
1088 ddt_sync_entry(ddt, dde, tx, txg); in ddt_sync_table()
1089 ddt_free(dde); in ddt_sync_table()
1137 ddt_walk(spa_t *spa, ddt_bookmark_t *ddb, ddt_entry_t *dde) in ddt_walk() argument
1148 &ddb->ddb_cursor, dde); in ddt_walk()
1150 dde->dde_type = ddb->ddb_type; in ddt_walk()
1151 dde->dde_class = ddb->ddb_class; in ddt_walk()