Why storage code in kernel is bad idea?
-->Fault isolation: If storage has a bug, it won't take compute down with it
--->Pace of Innovation: User-level code for storage has ruled for the last 2 decades since it is more maintainable, debuggable, and faster-paced.
-->Extensibility and Ecosystem Integration: User-space code makes it more extensible and lends itself to a pluggable architecture.
--->Rolling Upgrades: Compute doesn't blink when storage is undergoing a planned downtime.
-->Migration complexity (backward compatibility): kernel code has hard time using protobuf, RPC service etc
-->Security Isolation: The trusted computing base of the hypervisor must be kept lean and mean. Heartbleed and ShellShock are the veritable tips of the iceberg. Kernels have to be trusted, not bloated