Lines Matching refs:mm

158 	mirror_map_t *mm;  in vdev_mirror_map_alloc()  local
160 mm = kmem_zalloc(vdev_mirror_map_size(children), KM_SLEEP); in vdev_mirror_map_alloc()
161 mm->mm_children = children; in vdev_mirror_map_alloc()
162 mm->mm_resilvering = resilvering; in vdev_mirror_map_alloc()
163 mm->mm_root = root; in vdev_mirror_map_alloc()
164 mm->mm_preferred = (int *)((uintptr_t)mm + in vdev_mirror_map_alloc()
167 return (mm); in vdev_mirror_map_alloc()
173 mirror_map_t *mm = zio->io_vsd; in vdev_mirror_map_free() local
175 kmem_free(mm, vdev_mirror_map_size(mm->mm_children)); in vdev_mirror_map_free()
183 vdev_mirror_load(mirror_map_t *mm, vdev_t *vd, uint64_t zio_offset) in vdev_mirror_load() argument
190 if (mm->mm_root) in vdev_mirror_load()
268 mirror_map_t *mm = NULL; in vdev_mirror_map_init() local
326 mm = vdev_mirror_map_alloc(c, B_FALSE, B_TRUE); in vdev_mirror_map_init()
327 for (c = 0; c < mm->mm_children; c++) { in vdev_mirror_map_init()
328 mc = &mm->mm_child[c]; in vdev_mirror_map_init()
333 kmem_free(mm, vdev_mirror_map_size( in vdev_mirror_map_init()
334 mm->mm_children)); in vdev_mirror_map_init()
372 mm = vdev_mirror_map_alloc(vd->vdev_children, replacing, in vdev_mirror_map_init()
374 for (c = 0; c < mm->mm_children; c++) { in vdev_mirror_map_init()
375 mc = &mm->mm_child[c]; in vdev_mirror_map_init()
380 mm->mm_rebuilding = mc->mc_rebuilding = B_TRUE; in vdev_mirror_map_init()
384 return (mm); in vdev_mirror_map_init()
462 mirror_map_t *mm = zio->io_vsd; in vdev_mirror_dva_select() local
466 preferred = mm->mm_preferred[p]; in vdev_mirror_dva_select()
468 c = mm->mm_preferred[p]; in vdev_mirror_dva_select()
478 mirror_map_t *mm = zio->io_vsd; in vdev_mirror_preferred_child_randomize() local
481 if (mm->mm_root) { in vdev_mirror_preferred_child_randomize()
482 p = random_in_range(mm->mm_preferred_cnt); in vdev_mirror_preferred_child_randomize()
492 p = (zio->io_offset >> vdev_mirror_shift) % mm->mm_preferred_cnt; in vdev_mirror_preferred_child_randomize()
493 return (mm->mm_preferred[p]); in vdev_mirror_preferred_child_randomize()
531 mirror_map_t *mm = zio->io_vsd; in vdev_mirror_child_select() local
538 mm->mm_preferred_cnt = 0; in vdev_mirror_child_select()
539 for (c = 0; c < mm->mm_children; c++) { in vdev_mirror_child_select()
542 mc = &mm->mm_child[c]; in vdev_mirror_child_select()
562 mm->mm_preferred[0] = c; in vdev_mirror_child_select()
563 mm->mm_preferred_cnt = 1; in vdev_mirror_child_select()
567 mc->mc_load = vdev_mirror_load(mm, mc->mc_vd, mc->mc_offset); in vdev_mirror_child_select()
573 mm->mm_preferred_cnt = 0; in vdev_mirror_child_select()
575 mm->mm_preferred[mm->mm_preferred_cnt] = c; in vdev_mirror_child_select()
576 mm->mm_preferred_cnt++; in vdev_mirror_child_select()
579 if (mm->mm_preferred_cnt == 1) { in vdev_mirror_child_select()
581 return (mm->mm_preferred[0]); in vdev_mirror_child_select()
584 if (mm->mm_preferred_cnt > 1) { in vdev_mirror_child_select()
593 for (c = 0; c < mm->mm_children; c++) { in vdev_mirror_child_select()
594 if (!mm->mm_child[c].mc_tried) in vdev_mirror_child_select()
607 mirror_map_t *mm; in vdev_mirror_io_start() local
611 mm = vdev_mirror_map_init(zio); in vdev_mirror_io_start()
612 zio->io_vsd = mm; in vdev_mirror_io_start()
615 if (mm == NULL) { in vdev_mirror_io_start()
623 if ((zio->io_flags & ZIO_FLAG_SCRUB) && !mm->mm_resilvering) { in vdev_mirror_io_start()
632 for (c = 0; c < mm->mm_children; c++) { in vdev_mirror_io_start()
633 mc = &mm->mm_child[c]; in vdev_mirror_io_start()
668 children = mm->mm_children; in vdev_mirror_io_start()
672 mc = &mm->mm_child[c]; in vdev_mirror_io_start()
684 mm->mm_rebuilding && !mc->mc_rebuilding) { in vdev_mirror_io_start()
698 vdev_mirror_worst_error(mirror_map_t *mm) in vdev_mirror_worst_error() argument
702 for (int c = 0; c < mm->mm_children; c++) { in vdev_mirror_worst_error()
703 mirror_child_t *mc = &mm->mm_child[c]; in vdev_mirror_worst_error()
714 mirror_map_t *mm = zio->io_vsd; in vdev_mirror_io_done() local
721 if (mm == NULL) in vdev_mirror_io_done()
724 for (c = 0; c < mm->mm_children; c++) { in vdev_mirror_io_done()
725 mc = &mm->mm_child[c]; in vdev_mirror_io_done()
745 if (good_copies != mm->mm_children) { in vdev_mirror_io_done()
761 zio->io_error = vdev_mirror_worst_error(mm); in vdev_mirror_io_done()
784 zio->io_error = vdev_mirror_worst_error(mm); in vdev_mirror_io_done()
793 ASSERT(c >= 0 && c < mm->mm_children); in vdev_mirror_io_done()
794 mc = &mm->mm_child[c]; in vdev_mirror_io_done()
803 if (zio->io_flags & ZIO_FLAG_SCRUB && !mm->mm_resilvering) { in vdev_mirror_io_done()
806 best_abd = mm->mm_child[last_good_copy].mc_abd; in vdev_mirror_io_done()
822 mc = &mm->mm_child[c]; in vdev_mirror_io_done()
857 mc = &mm->mm_child[c]; in vdev_mirror_io_done()
869 for (c = 0; c < mm->mm_children; c++) { in vdev_mirror_io_done()
870 mc = &mm->mm_child[c]; in vdev_mirror_io_done()
878 zio->io_error = vdev_mirror_worst_error(mm); in vdev_mirror_io_done()
885 ((zio->io_flags & ZIO_FLAG_SCRUB) && mm->mm_resilvering))) { in vdev_mirror_io_done()
889 for (c = 0; c < mm->mm_children; c++) { in vdev_mirror_io_done()
897 mc = &mm->mm_child[c]; in vdev_mirror_io_done()