Fix vinum. Vinum illegally uses device ops such as dev_dopen(),
authorMatthew Dillon <dillon@dragonflybsd.org>
Tue, 31 Jul 2007 18:13:01 +0000 (18:13 +0000)
committerMatthew Dillon <dillon@dragonflybsd.org>
Tue, 31 Jul 2007 18:13:01 +0000 (18:13 +0000)
commitc1a85d27d7fa6ad2abb139c13baf06017954902d
treefcc9c9242e70429932946ea82b83f7a8167962ae
parentbf6a1c3bbe683583a3fa8b597cee021f50b016e7
Fix vinum.  Vinum illegally uses device ops such as dev_dopen(),
dev_dclose(), and dev_dstrategy() without following the restrictions and
requirements for those calls.  It does not properly check D_TRACKCLOSE
and does not properly limit DMA.

Access the low level device via the vnode subsystem instead of the device
subsystem.  Use new calls to synthesize appropriate vnodes based on the
requested device name and remove all the manual major/minor conversion junk.

When booting with a vinum root vinum will synthesize appropriate vnodes
to access devices.  If a root mount already exists vinum will simply
open the device vnode via the filesystem.

Reported-by: "Simon 'corecode' Schubert" <bugs@crater.dragonflybsd.org>,
     Chris Turner <c.turner@199technologies.org>
sys/dev/raid/vinum/vinuminterrupt.c
sys/dev/raid/vinum/vinumio.c
sys/dev/raid/vinum/vinumrequest.c
sys/dev/raid/vinum/vinumvar.h