| 57 | }; |
| 58 | |
| 59 | static void |
| 60 | ddt_object_create(ddt_t *ddt, enum ddt_type type, enum ddt_class class, |
| 61 | dmu_tx_t *tx) |
| 62 | { |
| 63 | spa_t *spa = ddt->ddt_spa; |
| 64 | objset_t *os = ddt->ddt_os; |
| 65 | uint64_t *objectp = &ddt->ddt_object[type][class]; |
| 66 | boolean_t prehash = zio_checksum_table[ddt->ddt_checksum].ci_flags & |
| 67 | ZCHECKSUM_FLAG_DEDUP; |
| 68 | char name[DDT_NAMELEN]; |
| 69 | |
| 70 | ddt_object_name(ddt, type, class, name); |
| 71 | |
| 72 | ASSERT(*objectp == 0); |
| 73 | VERIFY(ddt_ops[type]->ddt_op_create(os, objectp, tx, prehash) == 0); |
| 74 | ASSERT(*objectp != 0); |
| 75 | |
| 76 | VERIFY(zap_add(os, DMU_POOL_DIRECTORY_OBJECT, name, |
| 77 | sizeof (uint64_t), 1, objectp, tx) == 0); |
| 78 | |
| 79 | VERIFY(zap_add(os, spa->spa_ddt_stat_object, name, |
| 80 | sizeof (uint64_t), sizeof (ddt_histogram_t) / sizeof (uint64_t), |
| 81 | &ddt->ddt_histogram[type][class], tx) == 0); |
| 82 | } |
| 83 | |
| 84 | static void |
| 85 | ddt_object_destroy(ddt_t *ddt, enum ddt_type type, enum ddt_class class, |
no test coverage detected