On Tue, Aug 26, 2008 at 05:24:33AM +0200, Juan Romero Pardines wrote: [...] > ataraid0: found 2 RAID volumes > ld0 at ataraid0 vendtype 5 unit 0: Intel MatrixRAID ATA RAID-0 array < wd3 > wd4 > > ld0: 233 GB, 30416 cyl, 255 head, 63 sec, 512 bytes/sect x 488636416 sectors > ld1 at ataraid0 vendtype 5 unit 1: Intel MatrixRAID ATA RAID-1 array < wd3 > wd4 > > ld1: disabled > > But the problem is that I can't use multiple volumes, because this VOP_OPEN > in ld_ataraid.c returns EBUSY: > > /* > * Configure all the component disks. > */ > for (i = 0; i < aai->aai_ndisks; i++) { > adi = &aai->aai_disks[i]; > int bmajor, error; > dev_t dev; > > bmajor = devsw_name2blk(device_xname(adi->adi_dev), NULL, 0); > dev = MAKEDISKDEV(bmajor, device_unit(adi->adi_dev), > RAW_PART); > error = bdevvp(dev, &vp); > if (error) > break; > error = VOP_OPEN(vp, FREAD|FWRITE, NOCRED); > if (error) { > vput(vp); > /* > * XXX This is bogus. We should just mark the > * XXX component as FAILED, and write-back new > * XXX config blocks. > */ > break; > } > > VOP_UNLOCK(vp, 0); > sc->sc_vnodes[i] = vp; > } > > The question is, is there any way to open the same VBLK vnode for the same > device multiple times, to allow Intel MatrixRAID to fully exploit this > feature? I don't think there is any need of opening the devices multiple times. The ataraid(4) driver should open all the necessary devices for all its arrays, and then use them. In your example, ataraid0 "owns" wd3 and wd4, so why would it need to have them opened multiple times? -- Quentin Garnier - cube%cubidou.net@localhost - cube%NetBSD.org@localhost "See the look on my face from staying too long in one place [...] every time the morning breaks I know I'm closer to falling" KT Tunstall, Saving My Face, Drastic Fantastic, 2007.
Attachment:
pgp3GFbgMro00.pgp
Description: PGP signature