you want to look up disks attached to an mpi by bus addressing, not which raid volume you happen to be up to.
before this diff i got: dlg@hotspare dlg$ sudo bioctl mpii0 Volume Status Size Device mpii0 0 Online 146163105280 RAID1 0 Online 146815733248 0:2.0 noencl <SEAGATE ST9146852SS> 1 Online 146815733248 0:3.0 noencl <SEAGATE ST9146852SS> mpii0 1 Rebuild 148444806656 sd0 RAID1 78% done 0 Online 149039750656 0:0.0 noencl <Pliant LB150S> 1 Rebuild 149039750656 0:1.0 noencl <Pliant LB150S> after: dlg@hotspare pci$ sudo bioctl mpii0 Volume Status Size Device mpii0 0 Online 146163105280 sd0 RAID1 0 Online 146815733248 0:2.0 noencl <SEAGATE ST9146852SS> 1 Online 146815733248 0:3.0 noencl <SEAGATE ST9146852SS> mpii0 1 Rebuild 148444806656 sd1 RAID1 84% done 0 Online 149039750656 0:0.0 noencl <Pliant LB150S> 1 Rebuild 149039750656 0:1.0 noencl <Pliant LB150S> this also lets me address volumes by name (eg, bioctl sd1) now. ok? Index: mpii.c =================================================================== RCS file: /cvs/src/sys/dev/pci/mpii.c,v retrieving revision 1.38 diff -u -p -r1.38 mpii.c --- mpii.c 21 Feb 2011 09:36:15 -0000 1.38 +++ mpii.c 24 Feb 2011 01:40:08 -0000 @@ -4958,7 +4988,7 @@ mpii_ioctl_vol(struct mpii_softc *sc, st bv->bv_size = letoh64(vpg->max_lba) * letoh16(vpg->block_size); - lnk = scsi_get_link(sc->sc_scsibus, bv->bv_volid, 0); + lnk = scsi_get_link(sc->sc_scsibus, dev->slot, 0); if (lnk != NULL) { scdev = lnk->device_softc; strlcpy(bv->bv_dev, scdev->dv_xname, sizeof(bv->bv_dev));