MCPcopy Create free account
hub / github.com/F-Stack/f-stack / ddt_object_load

Function ddt_object_load

freebsd/contrib/openzfs/module/zfs/ddt.c:107–145  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

105}
106
107static int
108ddt_object_load(ddt_t *ddt, enum ddt_type type, enum ddt_class class)
109{
110 ddt_object_t *ddo = &ddt->ddt_object_stats[type][class];
111 dmu_object_info_t doi;
112 uint64_t count;
113 char name[DDT_NAMELEN];
114 int error;
115
116 ddt_object_name(ddt, type, class, name);
117
118 error = zap_lookup(ddt->ddt_os, DMU_POOL_DIRECTORY_OBJECT, name,
119 sizeof (uint64_t), 1, &ddt->ddt_object[type][class]);
120 if (error != 0)
121 return (error);
122
123 error = zap_lookup(ddt->ddt_os, ddt->ddt_spa->spa_ddt_stat_object, name,
124 sizeof (uint64_t), sizeof (ddt_histogram_t) / sizeof (uint64_t),
125 &ddt->ddt_histogram[type][class]);
126 if (error != 0)
127 return (error);
128
129 /*
130 * Seed the cached statistics.
131 */
132 error = ddt_object_info(ddt, type, class, &doi);
133 if (error)
134 return (error);
135
136 error = ddt_object_count(ddt, type, class, &count);
137 if (error)
138 return (error);
139
140 ddo->ddo_count = count;
141 ddo->ddo_dspace = doi.doi_physical_blocks_512 << 9;
142 ddo->ddo_mspace = doi.doi_fill_count * doi.doi_data_block_size;
143
144 return (0);
145}
146
147static void
148ddt_object_sync(ddt_t *ddt, enum ddt_type type, enum ddt_class class,

Callers 1

ddt_loadFunction · 0.85

Calls 4

ddt_object_nameFunction · 0.85
zap_lookupFunction · 0.85
ddt_object_infoFunction · 0.85
ddt_object_countFunction · 0.85

Tested by

no test coverage detected