Lines Matching refs:mc
192 metaslab_class_t *mc; in metaslab_class_create() local
194 mc = kmem_zalloc(sizeof (metaslab_class_t), KM_SLEEP); in metaslab_class_create()
196 mc->mc_spa = spa; in metaslab_class_create()
197 mc->mc_rotor = NULL; in metaslab_class_create()
198 mc->mc_ops = ops; in metaslab_class_create()
200 return (mc); in metaslab_class_create()
204 metaslab_class_destroy(metaslab_class_t *mc) in metaslab_class_destroy() argument
206 ASSERT(mc->mc_rotor == NULL); in metaslab_class_destroy()
207 ASSERT(mc->mc_alloc == 0); in metaslab_class_destroy()
208 ASSERT(mc->mc_deferred == 0); in metaslab_class_destroy()
209 ASSERT(mc->mc_space == 0); in metaslab_class_destroy()
210 ASSERT(mc->mc_dspace == 0); in metaslab_class_destroy()
212 kmem_free(mc, sizeof (metaslab_class_t)); in metaslab_class_destroy()
216 metaslab_class_validate(metaslab_class_t *mc) in metaslab_class_validate() argument
224 ASSERT(spa_config_held(mc->mc_spa, SCL_ALL, RW_READER) || in metaslab_class_validate()
225 spa_config_held(mc->mc_spa, SCL_ALL, RW_WRITER)); in metaslab_class_validate()
227 if ((mg = mc->mc_rotor) == NULL) in metaslab_class_validate()
234 ASSERT3P(mg->mg_class, ==, mc); in metaslab_class_validate()
236 } while ((mg = mg->mg_next) != mc->mc_rotor); in metaslab_class_validate()
242 metaslab_class_space_update(metaslab_class_t *mc, int64_t alloc_delta, in metaslab_class_space_update() argument
245 atomic_add_64(&mc->mc_alloc, alloc_delta); in metaslab_class_space_update()
246 atomic_add_64(&mc->mc_deferred, defer_delta); in metaslab_class_space_update()
247 atomic_add_64(&mc->mc_space, space_delta); in metaslab_class_space_update()
248 atomic_add_64(&mc->mc_dspace, dspace_delta); in metaslab_class_space_update()
252 metaslab_class_get_alloc(metaslab_class_t *mc) in metaslab_class_get_alloc() argument
254 return (mc->mc_alloc); in metaslab_class_get_alloc()
258 metaslab_class_get_deferred(metaslab_class_t *mc) in metaslab_class_get_deferred() argument
260 return (mc->mc_deferred); in metaslab_class_get_deferred()
264 metaslab_class_get_space(metaslab_class_t *mc) in metaslab_class_get_space() argument
266 return (mc->mc_space); in metaslab_class_get_space()
270 metaslab_class_get_dspace(metaslab_class_t *mc) in metaslab_class_get_dspace() argument
272 return (spa_deflate(mc->mc_spa) ? mc->mc_dspace : mc->mc_space); in metaslab_class_get_dspace()
276 metaslab_class_histogram_verify(metaslab_class_t *mc) in metaslab_class_histogram_verify() argument
278 vdev_t *rvd = mc->mc_spa->spa_root_vdev; in metaslab_class_histogram_verify()
297 mg->mg_class != mc) { in metaslab_class_histogram_verify()
306 VERIFY3U(mc_hist[i], ==, mc->mc_histogram[i]); in metaslab_class_histogram_verify()
319 metaslab_class_fragmentation(metaslab_class_t *mc) in metaslab_class_fragmentation() argument
321 vdev_t *rvd = mc->mc_spa->spa_root_vdev; in metaslab_class_fragmentation()
324 spa_config_enter(mc->mc_spa, SCL_VDEV, FTAG, RW_READER); in metaslab_class_fragmentation()
335 mg->mg_class != mc) { in metaslab_class_fragmentation()
344 spa_config_exit(mc->mc_spa, SCL_VDEV, FTAG); in metaslab_class_fragmentation()
355 fragmentation /= metaslab_class_get_space(mc); in metaslab_class_fragmentation()
358 spa_config_exit(mc->mc_spa, SCL_VDEV, FTAG); in metaslab_class_fragmentation()
369 metaslab_class_expandable_space(metaslab_class_t *mc) in metaslab_class_expandable_space() argument
371 vdev_t *rvd = mc->mc_spa->spa_root_vdev; in metaslab_class_expandable_space()
374 spa_config_enter(mc->mc_spa, SCL_VDEV, FTAG, RW_READER); in metaslab_class_expandable_space()
380 mg->mg_class != mc) { in metaslab_class_expandable_space()
386 spa_config_exit(mc->mc_spa, SCL_VDEV, FTAG); in metaslab_class_expandable_space()
430 metaslab_class_t *mc = mg->mg_class; in metaslab_group_alloc_update() local
468 mc->mc_alloc_groups--; in metaslab_group_alloc_update()
470 mc->mc_alloc_groups++; in metaslab_group_alloc_update()
476 metaslab_group_create(metaslab_class_t *mc, vdev_t *vd) in metaslab_group_create() argument
485 mg->mg_class = mc; in metaslab_group_create()
515 metaslab_class_t *mc = mg->mg_class; in metaslab_group_activate() local
518 ASSERT(spa_config_held(mc->mc_spa, SCL_ALLOC, RW_WRITER)); in metaslab_group_activate()
520 ASSERT(mc->mc_rotor != mg); in metaslab_group_activate()
531 if ((mgprev = mc->mc_rotor) == NULL) { in metaslab_group_activate()
541 mc->mc_rotor = mg; in metaslab_group_activate()
547 metaslab_class_t *mc = mg->mg_class; in metaslab_group_passivate() local
550 ASSERT(spa_config_held(mc->mc_spa, SCL_ALLOC, RW_WRITER)); in metaslab_group_passivate()
553 ASSERT(mc->mc_rotor != mg); in metaslab_group_passivate()
567 mc->mc_rotor = NULL; in metaslab_group_passivate()
569 mc->mc_rotor = mgnext; in metaslab_group_passivate()
621 metaslab_class_t *mc = mg->mg_class; in metaslab_group_histogram_add() local
632 mc->mc_histogram[i + ashift] += in metaslab_group_histogram_add()
641 metaslab_class_t *mc = mg->mg_class; in metaslab_group_histogram_remove() local
652 ASSERT3U(mc->mc_histogram[i + ashift], >=, in metaslab_group_histogram_remove()
657 mc->mc_histogram[i + ashift] -= in metaslab_group_histogram_remove()
754 metaslab_class_t *mc = mg->mg_class; in metaslab_group_allocatable() local
770 mc != spa_normal_class(spa) || mc->mc_alloc_groups == 0); in metaslab_group_allocatable()
2159 metaslab_alloc_dva(spa_t *spa, metaslab_class_t *mc, uint64_t psize, in metaslab_alloc_dva() argument
2217 mg = mc->mc_rotor; in metaslab_alloc_dva()
2223 mg = mc->mc_rotor; in metaslab_alloc_dva()
2230 if (mg->mg_class != mc || mg->mg_activation_count <= 0) in metaslab_alloc_dva()
2231 mg = mc->mc_rotor; in metaslab_alloc_dva()
2280 ASSERT(mg->mg_class == mc); in metaslab_alloc_dva()
2300 if (mc->mc_aliquot == 0 && metaslab_bias_enabled) { in metaslab_alloc_dva()
2305 cu = (mc->mc_alloc * 100) / (mc->mc_space + 1); in metaslab_alloc_dva()
2326 if (atomic_add_64_nv(&mc->mc_aliquot, asize) >= in metaslab_alloc_dva()
2328 mc->mc_rotor = mg->mg_next; in metaslab_alloc_dva()
2329 mc->mc_aliquot = 0; in metaslab_alloc_dva()
2340 mc->mc_rotor = mg->mg_next; in metaslab_alloc_dva()
2341 mc->mc_aliquot = 0; in metaslab_alloc_dva()
2474 metaslab_alloc(spa_t *spa, metaslab_class_t *mc, uint64_t psize, blkptr_t *bp, in metaslab_alloc() argument
2486 if (mc->mc_rotor == NULL) { /* no vdevs in this class */ in metaslab_alloc()
2496 error = metaslab_alloc_dva(spa, mc, psize, dva, d, hintdva, in metaslab_alloc()