I did but perhaps I'm wrong. There are one or two niceties I have learned about (from getting shadowing support in vddriver...and I have one that now is tested and works with dec volume shadowing...) that have to do with returning byte count on illegal functions (shdriver is kind of ill behaved) and with ensuring that IRPs that come from mount verify (the MVIRP bit set in irp$l_sts) don't get in trouble with or screw up any other synchronization. Unlike all others these just call driver start-io without synch on the busy bit...so I need to ensure that these just get acted on without clobbering any UCB fields needed for "real" I/O. Since we have other info to tell whether a disk is in fact present, the first packack can be let by to get the disk back in, and other such I/O should return ss$_medofl until the drvcon bit is set in the JB UCB, then return success for packack. MV won't send any reads till the packack succeeds, but doesn't synch its reads either, so that path should just go direct, and NOT steal irp$l_pid, but unbusy the JB device and send the I/O there. This should be done directly, via CALL_INITIATE, rather than via insioqc, to do it the way MV expects. That way mount verify should be ok. The other fix is just to return R0 with the high word containing irp$w_bcnt (or the low half of irp$l_bcnt anyhow) and 1 in low word if the function is unsupported...this from the startio entry. Seems shadowing calls io$_dse and needs this... EVEN IF THE DRIVER DOES NOT CLAIM THIS IS A LEGAL FUNCTION. Lose lose lose.