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>