Lines Matching refs:mc

269 	mirror_child_t *mc;  in vdev_mirror_map_init()  local
328 mc = &mm->mm_child[c]; in vdev_mirror_map_init()
330 mc->mc_vd = vdev_lookup_top(spa, DVA_GET_VDEV(&dva[c])); in vdev_mirror_map_init()
331 mc->mc_offset = DVA_GET_OFFSET(&dva[c]); in vdev_mirror_map_init()
332 if (mc->mc_vd == NULL) { in vdev_mirror_map_init()
375 mc = &mm->mm_child[c]; in vdev_mirror_map_init()
376 mc->mc_vd = vd->vdev_child[c]; in vdev_mirror_map_init()
377 mc->mc_offset = zio->io_offset; in vdev_mirror_map_init()
379 if (vdev_mirror_rebuilding(mc->mc_vd)) in vdev_mirror_map_init()
380 mm->mm_rebuilding = mc->mc_rebuilding = B_TRUE; in vdev_mirror_map_init()
444 mirror_child_t *mc = zio->io_private; in vdev_mirror_child_done() local
446 mc->mc_error = zio->io_error; in vdev_mirror_child_done()
447 mc->mc_tried = 1; in vdev_mirror_child_done()
448 mc->mc_skipped = 0; in vdev_mirror_child_done()
497 vdev_mirror_child_readable(mirror_child_t *mc) in vdev_mirror_child_readable() argument
499 vdev_t *vd = mc->mc_vd; in vdev_mirror_child_readable()
502 return (vdev_draid_readable(vd, mc->mc_offset)); in vdev_mirror_child_readable()
508 vdev_mirror_child_missing(mirror_child_t *mc, uint64_t txg, uint64_t size) in vdev_mirror_child_missing() argument
510 vdev_t *vd = mc->mc_vd; in vdev_mirror_child_missing()
513 return (vdev_draid_missing(vd, mc->mc_offset, txg, size)); in vdev_mirror_child_missing()
540 mirror_child_t *mc; in vdev_mirror_child_select() local
542 mc = &mm->mm_child[c]; in vdev_mirror_child_select()
543 if (mc->mc_tried || mc->mc_skipped) in vdev_mirror_child_select()
546 if (mc->mc_vd == NULL || in vdev_mirror_child_select()
547 !vdev_mirror_child_readable(mc)) { in vdev_mirror_child_select()
548 mc->mc_error = SET_ERROR(ENXIO); in vdev_mirror_child_select()
549 mc->mc_tried = 1; /* don't even try */ in vdev_mirror_child_select()
550 mc->mc_skipped = 1; in vdev_mirror_child_select()
554 if (vdev_mirror_child_missing(mc, txg, 1)) { in vdev_mirror_child_select()
555 mc->mc_error = SET_ERROR(ESTALE); in vdev_mirror_child_select()
556 mc->mc_skipped = 1; in vdev_mirror_child_select()
557 mc->mc_speculative = 1; in vdev_mirror_child_select()
561 if (mc->mc_vd->vdev_ops == &vdev_draid_spare_ops) { in vdev_mirror_child_select()
567 mc->mc_load = vdev_mirror_load(mm, mc->mc_vd, mc->mc_offset); in vdev_mirror_child_select()
568 if (mc->mc_load > lowest_load) in vdev_mirror_child_select()
571 if (mc->mc_load < lowest_load) { in vdev_mirror_child_select()
572 lowest_load = mc->mc_load; in vdev_mirror_child_select()
608 mirror_child_t *mc; in vdev_mirror_io_start() local
633 mc = &mm->mm_child[c]; in vdev_mirror_io_start()
636 if (!vdev_mirror_child_readable(mc)) { in vdev_mirror_io_start()
637 mc->mc_error = SET_ERROR(ENXIO); in vdev_mirror_io_start()
638 mc->mc_tried = 1; in vdev_mirror_io_start()
639 mc->mc_skipped = 1; in vdev_mirror_io_start()
643 mc->mc_abd = first ? zio->io_abd : in vdev_mirror_io_start()
647 mc->mc_vd, mc->mc_offset, mc->mc_abd, in vdev_mirror_io_start()
650 vdev_mirror_child_done, mc)); 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()
689 mc->mc_vd, mc->mc_offset, zio->io_abd, zio->io_size, in vdev_mirror_io_start()
691 vdev_mirror_child_done, mc)); in vdev_mirror_io_start()
703 mirror_child_t *mc = &mm->mm_child[c]; in vdev_mirror_worst_error() local
704 int s = mc->mc_speculative; in vdev_mirror_worst_error()
705 error[s] = zio_worst_error(error[s], mc->mc_error); in vdev_mirror_worst_error()
715 mirror_child_t *mc; in vdev_mirror_io_done() local
725 mc = &mm->mm_child[c]; in vdev_mirror_io_done()
727 if (mc->mc_error) { in vdev_mirror_io_done()
728 if (!mc->mc_skipped) in vdev_mirror_io_done()
730 } else if (mc->mc_tried) { in vdev_mirror_io_done()
794 mc = &mm->mm_child[c]; in vdev_mirror_io_done()
797 mc->mc_vd, mc->mc_offset, zio->io_abd, zio->io_size, in vdev_mirror_io_done()
799 vdev_mirror_child_done, mc)); in vdev_mirror_io_done()
822 mc = &mm->mm_child[c]; in vdev_mirror_io_done()
823 if (mc->mc_error || !mc->mc_tried) in vdev_mirror_io_done()
826 if (abd_cmp(mc->mc_abd, best_abd) != 0) in vdev_mirror_io_done()
835 mc->mc_vd->vdev_ops == in vdev_mirror_io_done()
837 pref_abd = mc->mc_abd; in vdev_mirror_io_done()
843 if (mc->mc_abd == zio->io_abd) in vdev_mirror_io_done()
844 best_abd = mc->mc_abd; in vdev_mirror_io_done()
857 mc = &mm->mm_child[c]; in vdev_mirror_io_done()
858 if (mc->mc_error || !mc->mc_tried) in vdev_mirror_io_done()
860 if (mc->mc_abd == zio->io_abd) { in vdev_mirror_io_done()
861 best_abd = mc->mc_abd; in vdev_mirror_io_done()
870 mc = &mm->mm_child[c]; in vdev_mirror_io_done()
871 if (mc->mc_abd != zio->io_abd) in vdev_mirror_io_done()
872 abd_free(mc->mc_abd); in vdev_mirror_io_done()
873 mc->mc_abd = NULL; in vdev_mirror_io_done()
897 mc = &mm->mm_child[c]; in vdev_mirror_io_done()
899 if (mc->mc_error == 0) { in vdev_mirror_io_done()
900 vdev_ops_t *ops = mc->mc_vd->vdev_ops; in vdev_mirror_io_done()
902 if (mc->mc_tried) in vdev_mirror_io_done()
920 !vdev_dtl_contains(mc->mc_vd, DTL_PARTIAL, in vdev_mirror_io_done()
923 mc->mc_error = SET_ERROR(ESTALE); in vdev_mirror_io_done()
927 mc->mc_vd, mc->mc_offset, in vdev_mirror_io_done()