This dies in spec_strategy: KASSERT(vp == vp->v_specnode->sn_dev->sd_bdevvp); presumably because the vnode does not match after the device unmounted. Instead of KASSERT() you can check for the condition and return EIO... Does the kernel go further if you do that? christos