Passthrough in general is useful, but the problem is that protocols aren't designed with it in mind. Look at the list of command that affect too much state and we have to block in SCSI and NVMe. And in NVMe I'm fighting a constant fight in the technical working group to not add new command that instantly disable the access control we've built into NVMe passthrough. So IMHO passthrough can be good idea, but only if the protocol is designed for it, and protocol designer generally have a hard time how software works at all, never mind the futuristic concepts of layering, abstraction and access control.