At step 402, IO load balancing and submission functionality 216 generates corresponding user space block devices 218 in the user space 210 for the generated native paths.
At step 404, the interface logic 114 identifies the generated user space block devices 218. If present, the interface logic 114 may also identify any other multipath devices.
At step 406, for each unique user space block device 218 in the user space 210, interface logic 114 generates corresponding kernel space block devices 228 in the kernel space 220. The kernel space block devices 228 are configured to transfer IO operations between the corresponding user space block device 218 and applications or filesystems which rely on kernel space-based IO load balancing and submission functionality 224 for submitting IO operations to the storage array 105. For example, the kernel space block devices 228 are configured to copy and transfer data between application 212 operating in the user space 210 and the user space block devices 218 operating in the user space 210 via the kernel, e.g., using IPC sockets or other communication methods. The IPC sockets may, for example, be fast enough to handle the throughput of the user space IO load balancing and submission functionality 216.
At step 408, the one or more kernel space block devices 228 receive an IO operation from application 212.
At step 410, the one or more kernel space block devices 228 transfer the IO operation to one or more of the corresponding user space block devices 218 of the IO load balancing and submission functionality 216.