Lines Matching refs:un

108 	mr_unit_t	*un;
110 un = MD_UNIT(mnum);
111 ASSERT(un != NULL);
113 un->c.un_status &= ~MD_UN_RESYNC_ACTIVE;
115 un->un_column[un->un_resync_index].un_devflags &= ~MD_RAID_RESYNC;
116 un->un_column[un->un_resync_index].un_devflags &= ~MD_RAID_RESYNC_ERRED;
117 un->un_column[un->un_resync_index].un_devflags &=
120 un->un_resync_line_index = 0;
121 un->un_resync_index = NOCOLUMN;
153 mr_unit_t *un;
155 un = MD_UNIT(mnum);
156 ASSERT(un != NULL);
159 if (! (un->un_column[column_index].un_devflags & MD_RAID_RESYNC) &&
160 ((un->c.un_status & MD_UN_RESYNC_ACTIVE) ||
161 (un->c.un_status & MD_UN_GROW_PENDING) ||
162 (un->un_column[column_index].un_devstate & RCS_RESYNC))) {
168 if (un->un_column[column_index].un_devstate &
170 un->un_column[column_index].un_devflags |= MD_RAID_DEV_ERRED;
172 un->un_column[column_index].un_devflags &= ~MD_RAID_DEV_ERRED;
173 un->c.un_status |= MD_UN_RESYNC_ACTIVE;
174 un->un_resync_index = column_index;
175 un->un_resync_line_index = 0;
176 raid_set_state(un, column_index, RCS_RESYNC, 0);
265 mr_unit_t *un,
278 ASSERT(un != NULL);
279 ASSERT(un->un_column[col].un_devflags & MD_RAID_DEV_ISOPEN);
281 bsize = un->un_iosize;
286 for (i = 0; i < un->un_pwcnt; i++) {
288 RAID_FILLIN_RPW(databuffer, un, 0, 0,
294 buf.b_lblkno = pwstart + (i * un->un_iosize);
317 * PARAMETERS: un
326 raid_open_alt(mr_unit_t *un, int index)
328 mr_column_t *column = &un->un_column[index];
329 set_t setno = MD_MIN2SET(MD_SID(un));
334 ASSERT(UNIT_WRITER_HELD(un));
347 tmpdev = md_resolve_bydevid(MD_SID(un), tmpdev,
350 if (md_layered_open(MD_SID(un), &tmpdev, MD_OFLG_NULL)) {
371 * PARAMETERS: un - raid unit structure
380 raid_close_alt(mr_unit_t *un, int index)
382 mr_column_t *column = &un->un_column[index];
385 ASSERT(UNIT_WRITER_HELD(un)); /* correct locks */
398 mr_unit_t *un = cs->cs_un;
400 ASSERT(line < un->un_segsincolumn);
403 cs->cs_blkno = line * un->un_segsize;
404 cs->cs_blkcnt = un->un_segsize * line_count;
429 mr_unit_t *un = cs->cs_un;
441 resync = un->un_resync_index;
442 off = line * un->un_segsize;
443 copysize = un->un_resync_copysize;
447 leftinseg = un->un_segsize * line_count;
482 if (un->un_column[resync].un_dev == NODEV64)
490 un->un_column[resync].un_dev);
492 un->un_column[resync].un_devstart + off;
502 un->un_column[resync].un_devflags &=
504 un->un_column[resync].un_devflags |=
513 for (i = 0; i < un->un_totalcolumncnt; i++) {
515 if (un->un_column[i].un_dev == NODEV64)
527 un->un_column[i].un_dev);
529 un->un_column[i].un_devstart + off;
598 mr_unit_t *un;
627 un = cs->cs_un;
630 un = (mr_unit_t *)md_io_writerlock(ui);
631 un = (mr_unit_t *)md_unit_writerlock(ui);
632 resync = un->un_resync_index;
633 state = un->un_column[resync].un_devstate;
634 line_count = un->un_maxio / un->un_segsize;
637 bsize = un->un_maxio;
639 bsize = line_count * un->un_segsize;
641 un->un_resync_copysize = (uint_t)bsize;
643 ASSERT(un->c.un_status & MD_UN_RESYNC_ACTIVE);
644 ASSERT(un->un_column[resync].un_devflags &
650 if (! (un->un_column[resync].un_devstate & RCS_RESYNC)) {
653 un = (mr_unit_t *)md_unit_readerlock(ui);
657 MD_UN2SET(un), MD_SID(un));
661 if (un->un_column[resync].un_alt_dev != NODEV64) {
662 if (raid_open_alt(un, resync)) {
663 raid_set_state(un, resync, state, 0);
666 un = (mr_unit_t *)md_unit_readerlock(ui);
668 "terminated", md_shortname(MD_SID(un)),
669 md_devname(MD_UN2SET(un),
670 un->un_column[resync].un_alt_dev,
673 SVM_TAG_METADEVICE, MD_UN2SET(un), MD_SID(un));
676 ASSERT(un->un_column[resync].un_devflags & MD_RAID_COPY_RESYNC);
677 dev_to_write = un->un_column[resync].un_alt_dev;
678 write_devstart = un->un_column[resync].un_alt_devstart;
679 write_pwstart = un->un_column[resync].un_alt_pwstart;
680 if (un->un_column[resync].un_devflags & MD_RAID_DEV_ERRED) {
687 un->un_column[resync].un_devflags |= MD_RAID_WRITE_ALT;
689 dev_to_write = un->un_column[resync].un_dev;
690 write_devstart = un->un_column[resync].un_devstart;
691 write_pwstart = un->un_column[resync].un_pwstart;
694 ASSERT(un->un_column[resync].un_devflags &
700 if (init_pw_area(un, dev_to_write, write_pwstart, resync)) {
701 un->un_column[resync].un_devflags &= ~MD_RAID_WRITE_ALT;
702 if (un->un_column[resync].un_alt_dev != NODEV64) {
703 raid_close_alt(un, resync);
707 if (dev_to_write == un->un_column[resync].un_dev)
713 un->c.un_status &= ~MD_UN_RESYNC_CANCEL;
714 segsincolumn = un->un_segsincolumn;
715 err_cnt = raid_state_cnt(un, RCS_ERRED | RCS_LAST_ERRED);
732 un = (mr_unit_t *)md_io_readerlock(ui);
737 ASSERT(un->un_resync_line_index == resync_end_pos);
747 un->un_resync_line_index = 0;
756 un = (mr_unit_t *)md_unit_writerlock(ui);
758 if (raid_state_cnt(un, RCS_ERRED | RCS_LAST_ERRED) != err_cnt) {
767 un = (mr_unit_t *)md_io_writerlock(ui);
769 un->un_column[resync].un_devflags &= ~MD_RAID_WRITE_ALT;
779 if ((un->un_column[resync].un_orig_dev != NODEV64) &&
780 (un->un_column[resync].un_orig_dev ==
781 un->un_column[resync].un_alt_dev)) {
787 raid_hs_release(hs_state, un, &recids[0], resync);
792 un->un_column[resync].un_hs_id = 0;
793 un->un_column[resync].un_dev =
794 un->un_column[resync].un_orig_dev;
795 un->un_column[resync].un_devstart =
796 un->un_column[resync].un_orig_devstart;
797 un->un_column[resync].un_pwstart =
798 un->un_column[resync].un_orig_pwstart;
799 un->un_column[resync].un_devflags |= MD_RAID_DEV_ISOPEN;
801 un->un_column[resync].un_devflags &= ~MD_RAID_WRITE_ALT;
802 un->un_column[resync].un_devflags &=
804 un->un_column[resync].un_alt_dev = NODEV64;
806 raid_set_state(un, resync, RCS_OKAY, 0);
810 if (HOTSPARED(un, resync) && single_read &&
811 (un->un_column[resync].un_devflags & MD_RAID_COPY_RESYNC)) {
817 raid_set_state(un, resync, RCS_OKAY, 0);
819 "terminated", md_shortname(MD_SID(un)),
820 md_devname(MD_UN2SET(un),
821 un->un_column[resync].un_orig_dev,
825 if (HOTSPARED(un, resync)) {
826 raid_hs_release(hs_state, un, &recids[0], resync);
827 un->un_column[resync].un_dev =
828 un->un_column[resync].un_orig_dev;
829 un->un_column[resync].un_devstart =
830 un->un_column[resync].un_orig_devstart;
831 un->un_column[resync].un_pwstart =
832 un->un_column[resync].un_orig_pwstart;
834 raid_set_state(un, resync, RCS_ERRED, 0);
835 if (un->un_column[resync].un_devflags & MD_RAID_REGEN_RESYNC)
836 dev = un->un_column[resync].un_dev;
838 dev = un->un_column[resync].un_alt_dev;
840 md_shortname(MD_SID(un)), md_devname(MD_UN2SET(un), dev,
845 if (HOTSPARED(un, resync) && single_read &&
846 (un->un_column[resync].un_devflags & MD_RAID_COPY_RESYNC)) {
852 raid_set_state(un, resync, RCS_OKAY, 0);
854 "terminated", md_shortname(MD_SID(un)));
857 if (HOTSPARED(un, resync)) {
858 raid_hs_release(hs_state, un, &recids[0], resync);
859 un->un_column[resync].un_dev =
860 un->un_column[resync].un_orig_dev;
861 un->un_column[resync].un_devstart =
862 un->un_column[resync].un_orig_devstart;
863 un->un_column[resync].un_pwstart =
864 un->un_column[resync].un_orig_pwstart;
868 if (HOTSPARED(un, resync)) {
869 raid_hs_release(hs_state, un, &recids[0], resync);
870 un->un_column[resync].un_dev =
871 un->un_column[resync].un_orig_dev;
872 un->un_column[resync].un_devstart =
873 un->un_column[resync].un_orig_devstart;
874 un->un_column[resync].un_pwstart =
875 un->un_column[resync].un_orig_pwstart;
879 raid_set_state(un, err_col, RCS_ERRED, 0);
885 if (un->un_column[resync].un_alt_dev != NODEV64) {
886 raid_close_alt(un, resync);
897 for (i = 0; i < un->un_totalcolumncnt; i++) {
898 if (un->un_column[i].un_devstate & RCS_OKAY)
901 raid_set_state(un, i, RCS_ERRED, 1);
906 raid_set_state(un, i, RCS_LAST_ERRED, 1);
911 un->un_state = RUS_OKAY;
913 un->un_state = RUS_ERRED;
916 un->un_state = RUS_LAST_ERRED;
919 uniqtime32(&un->un_column[resync].un_devtimestamp);
920 un->un_resync_copysize = 0;
921 un->un_column[resync].un_devflags &=
923 raid_commit(un, recids);
930 SVM_TAG_METADEVICE, MD_UN2SET(un), MD_SID(un));
933 SVM_TAG_METADEVICE, MD_UN2SET(un), MD_SID(un));
934 if (raid_state_cnt(un, RCS_ERRED |
937 SVM_TAG_METADEVICE, MD_UN2SET(un), MD_SID(un));
940 SVM_TAG_METADEVICE, MD_UN2SET(un), MD_SID(un));
966 mr_unit_t *un;
981 un = (mr_unit_t *)md_unit_readerlock(ui);
994 resync = un->un_resync_index;
995 ps->ps_un = un;
999 cs->cs_un = un;
1001 ASSERT(!(un->un_column[resync].un_devflags & MD_RAID_WRITE_ALT));
1048 mr_unit_t *un;
1051 un = MD_UNIT(mnum);
1056 ASSERT(un->un_column[un->un_resync_index].un_devflags &
1069 setno, MD_SID(un));