Lines Matching refs:mm

157 	mirror_map_t *mm;  in vdev_mirror_map_alloc()  local
159 mm = kmem_zalloc(vdev_mirror_map_size(children), KM_SLEEP); in vdev_mirror_map_alloc()
160 mm->mm_children = children; in vdev_mirror_map_alloc()
161 mm->mm_resilvering = resilvering; in vdev_mirror_map_alloc()
162 mm->mm_root = root; in vdev_mirror_map_alloc()
163 mm->mm_preferred = (int *)((uintptr_t)mm + in vdev_mirror_map_alloc()
166 return (mm); in vdev_mirror_map_alloc()
172 mirror_map_t *mm = zio->io_vsd; in vdev_mirror_map_free() local
174 kmem_free(mm, vdev_mirror_map_size(mm->mm_children)); in vdev_mirror_map_free()
182 vdev_mirror_load(mirror_map_t *mm, vdev_t *vd, uint64_t zio_offset) in vdev_mirror_load() argument
189 if (mm->mm_root) in vdev_mirror_load()
267 mirror_map_t *mm = NULL; in vdev_mirror_map_init() local
325 mm = vdev_mirror_map_alloc(c, B_FALSE, B_TRUE); in vdev_mirror_map_init()
326 for (c = 0; c < mm->mm_children; c++) { in vdev_mirror_map_init()
327 mc = &mm->mm_child[c]; in vdev_mirror_map_init()
332 kmem_free(mm, vdev_mirror_map_size( in vdev_mirror_map_init()
333 mm->mm_children)); in vdev_mirror_map_init()
371 mm = vdev_mirror_map_alloc(vd->vdev_children, replacing, in vdev_mirror_map_init()
373 for (c = 0; c < mm->mm_children; c++) { in vdev_mirror_map_init()
374 mc = &mm->mm_child[c]; in vdev_mirror_map_init()
379 mm->mm_rebuilding = mc->mc_rebuilding = B_TRUE; in vdev_mirror_map_init()
383 return (mm); in vdev_mirror_map_init()
461 mirror_map_t *mm = zio->io_vsd; in vdev_mirror_dva_select() local
465 preferred = mm->mm_preferred[p]; in vdev_mirror_dva_select()
467 c = mm->mm_preferred[p]; in vdev_mirror_dva_select()
477 mirror_map_t *mm = zio->io_vsd; in vdev_mirror_preferred_child_randomize() local
480 if (mm->mm_root) { in vdev_mirror_preferred_child_randomize()
481 p = random_in_range(mm->mm_preferred_cnt); in vdev_mirror_preferred_child_randomize()
491 p = (zio->io_offset >> vdev_mirror_shift) % mm->mm_preferred_cnt; in vdev_mirror_preferred_child_randomize()
492 return (mm->mm_preferred[p]); in vdev_mirror_preferred_child_randomize()
530 mirror_map_t *mm = zio->io_vsd; in vdev_mirror_child_select() local
537 mm->mm_preferred_cnt = 0; in vdev_mirror_child_select()
538 for (c = 0; c < mm->mm_children; c++) { in vdev_mirror_child_select()
541 mc = &mm->mm_child[c]; in vdev_mirror_child_select()
561 mm->mm_preferred[0] = c; in vdev_mirror_child_select()
562 mm->mm_preferred_cnt = 1; in vdev_mirror_child_select()
566 mc->mc_load = vdev_mirror_load(mm, mc->mc_vd, mc->mc_offset); in vdev_mirror_child_select()
572 mm->mm_preferred_cnt = 0; in vdev_mirror_child_select()
574 mm->mm_preferred[mm->mm_preferred_cnt] = c; in vdev_mirror_child_select()
575 mm->mm_preferred_cnt++; in vdev_mirror_child_select()
578 if (mm->mm_preferred_cnt == 1) { in vdev_mirror_child_select()
580 return (mm->mm_preferred[0]); in vdev_mirror_child_select()
583 if (mm->mm_preferred_cnt > 1) { in vdev_mirror_child_select()
592 for (c = 0; c < mm->mm_children; c++) { in vdev_mirror_child_select()
593 if (!mm->mm_child[c].mc_tried) in vdev_mirror_child_select()
606 mirror_map_t *mm; in vdev_mirror_io_start() local
610 mm = vdev_mirror_map_init(zio); in vdev_mirror_io_start()
611 zio->io_vsd = mm; in vdev_mirror_io_start()
614 if (mm == NULL) { in vdev_mirror_io_start()
622 if ((zio->io_flags & ZIO_FLAG_SCRUB) && !mm->mm_resilvering) { in vdev_mirror_io_start()
631 for (c = 0; c < mm->mm_children; c++) { in vdev_mirror_io_start()
632 mc = &mm->mm_child[c]; in vdev_mirror_io_start()
667 children = mm->mm_children; in vdev_mirror_io_start()
671 mc = &mm->mm_child[c]; in vdev_mirror_io_start()
683 mm->mm_rebuilding && !mc->mc_rebuilding) { in vdev_mirror_io_start()
697 vdev_mirror_worst_error(mirror_map_t *mm) in vdev_mirror_worst_error() argument
701 for (int c = 0; c < mm->mm_children; c++) { in vdev_mirror_worst_error()
702 mirror_child_t *mc = &mm->mm_child[c]; in vdev_mirror_worst_error()
713 mirror_map_t *mm = zio->io_vsd; in vdev_mirror_io_done() local
720 if (mm == NULL) in vdev_mirror_io_done()
723 for (c = 0; c < mm->mm_children; c++) { in vdev_mirror_io_done()
724 mc = &mm->mm_child[c]; in vdev_mirror_io_done()
744 if (good_copies != mm->mm_children) { in vdev_mirror_io_done()
760 zio->io_error = vdev_mirror_worst_error(mm); in vdev_mirror_io_done()
771 ASSERT(c >= 0 && c < mm->mm_children); in vdev_mirror_io_done()
772 mc = &mm->mm_child[c]; in vdev_mirror_io_done()
781 if (zio->io_flags & ZIO_FLAG_SCRUB && !mm->mm_resilvering) { in vdev_mirror_io_done()
784 best_abd = mm->mm_child[last_good_copy].mc_abd; in vdev_mirror_io_done()
800 mc = &mm->mm_child[c]; in vdev_mirror_io_done()
835 mc = &mm->mm_child[c]; in vdev_mirror_io_done()
847 for (c = 0; c < mm->mm_children; c++) { in vdev_mirror_io_done()
848 mc = &mm->mm_child[c]; in vdev_mirror_io_done()
856 zio->io_error = vdev_mirror_worst_error(mm); in vdev_mirror_io_done()
863 ((zio->io_flags & ZIO_FLAG_SCRUB) && mm->mm_resilvering))) { in vdev_mirror_io_done()
867 for (c = 0; c < mm->mm_children; c++) { in vdev_mirror_io_done()
875 mc = &mm->mm_child[c]; in vdev_mirror_io_done()