Lines Matching defs:mm
157 mirror_map_t *mm;
159 mm = kmem_zalloc(vdev_mirror_map_size(children), KM_SLEEP);
160 mm->mm_children = children;
161 mm->mm_resilvering = resilvering;
162 mm->mm_root = root;
163 mm->mm_preferred = (int *)((uintptr_t)mm +
166 return (mm);
172 mirror_map_t *mm = zio->io_vsd;
174 kmem_free(mm, vdev_mirror_map_size(mm->mm_children));
182 vdev_mirror_load(mirror_map_t *mm, vdev_t *vd, uint64_t zio_offset)
189 if (mm->mm_root)
267 mirror_map_t *mm = NULL;
325 mm = vdev_mirror_map_alloc(c, B_FALSE, B_TRUE);
326 for (c = 0; c < mm->mm_children; c++) {
327 mc = &mm->mm_child[c];
332 kmem_free(mm, vdev_mirror_map_size(
333 mm->mm_children));
371 mm = vdev_mirror_map_alloc(vd->vdev_children, replacing,
373 for (c = 0; c < mm->mm_children; c++) {
374 mc = &mm->mm_child[c];
379 mm->mm_rebuilding = mc->mc_rebuilding = B_TRUE;
383 return (mm);
461 mirror_map_t *mm = zio->io_vsd;
465 preferred = mm->mm_preferred[p];
467 c = mm->mm_preferred[p];
477 mirror_map_t *mm = zio->io_vsd;
480 if (mm->mm_root) {
481 p = random_in_range(mm->mm_preferred_cnt);
491 p = (zio->io_offset >> vdev_mirror_shift) % mm->mm_preferred_cnt;
492 return (mm->mm_preferred[p]);
530 mirror_map_t *mm = zio->io_vsd;
537 mm->mm_preferred_cnt = 0;
538 for (c = 0; c < mm->mm_children; c++) {
541 mc = &mm->mm_child[c];
561 mm->mm_preferred[0] = c;
562 mm->mm_preferred_cnt = 1;
566 mc->mc_load = vdev_mirror_load(mm, mc->mc_vd, mc->mc_offset);
572 mm->mm_preferred_cnt = 0;
574 mm->mm_preferred[mm->mm_preferred_cnt] = c;
575 mm->mm_preferred_cnt++;
578 if (mm->mm_preferred_cnt == 1) {
580 return (mm->mm_preferred[0]);
583 if (mm->mm_preferred_cnt > 1) {
592 for (c = 0; c < mm->mm_children; c++) {
593 if (!mm->mm_child[c].mc_tried)
606 mirror_map_t *mm;
610 mm = vdev_mirror_map_init(zio);
611 zio->io_vsd = mm;
614 if (mm == NULL) {
622 if ((zio->io_flags & ZIO_FLAG_SCRUB) && !mm->mm_resilvering) {
631 for (c = 0; c < mm->mm_children; c++) {
632 mc = &mm->mm_child[c];
667 children = mm->mm_children;
671 mc = &mm->mm_child[c];
683 mm->mm_rebuilding && !mc->mc_rebuilding) {
697 vdev_mirror_worst_error(mirror_map_t *mm)
701 for (int c = 0; c < mm->mm_children; c++) {
702 mirror_child_t *mc = &mm->mm_child[c];
713 mirror_map_t *mm = zio->io_vsd;
720 if (mm == NULL)
723 for (c = 0; c < mm->mm_children; c++) {
724 mc = &mm->mm_child[c];
744 if (good_copies != mm->mm_children) {
760 zio->io_error = vdev_mirror_worst_error(mm);
783 zio->io_error = vdev_mirror_worst_error(mm);
792 ASSERT(c >= 0 && c < mm->mm_children);
793 mc = &mm->mm_child[c];
802 if (zio->io_flags & ZIO_FLAG_SCRUB && !mm->mm_resilvering) {
805 best_abd = mm->mm_child[last_good_copy].mc_abd;
821 mc = &mm->mm_child[c];
856 mc = &mm->mm_child[c];
868 for (c = 0; c < mm->mm_children; c++) {
869 mc = &mm->mm_child[c];
877 zio->io_error = vdev_mirror_worst_error(mm);
884 ((zio->io_flags & ZIO_FLAG_SCRUB) && mm->mm_resilvering))) {
888 for (c = 0; c < mm->mm_children; c++) {
896 mc = &mm->mm_child[c];