System and method for efficient scalable software-defined NVMEoF front-end connectivity
A method, computer program product, and computer system for directing, by a computing device, an incoming Non-Volatile Memory express (NVMe) command to a kernel driver. The kernel driver may enqueue the incoming NVMe command until fetched by a user space. The NVMe command may be fetched from the kernel driver for processing. The NVMe command may be pushed to a user space block device of the user space.
1. A computer-implemented method comprising:
directing, by a computing device, an incoming Non-Volatile Memory express (NVMe) command from a Non-Volatile Memory Express Target (NVMET) built-in protocol processor to a kernel driver, wherein the incoming NVMe command is directed by, at least, one or more NVMET transports;
enqueuing, by the kernel driver, the incoming NVMe command until fetched by a user space;
polling, by a component of a datapath process, for the incoming NVMe command;
fetching the NVMe command from the kernel driver for processing by the datapath process; and
pushing the NVMe command to a user space block device of the user space.
2. The computer-implemented method of claim 1 wherein a driver in a kernel space holds the incoming NVMe command until fetched by the datapath process.
3. The computer-implemented method of claim 2 wherein the driver in the kernel space allocates pages that are mapped to the datapath process.
4. The computer-implemented method of claim 2 wherein, when the datapath process completes the NVMe command, the datapath process pushes completion of the NVMe command to the driver in the kernel space.
5. The computer-implemented method of claim 4 wherein, when the datapath process pushes the completion of the NVMe command to the driver in the kernel space, the driver in the kernel space passes the completion of the NVMe command to a host.
6. The computer-implemented method of claim 3 wherein the datapath process includes a component that maps the pages to the kernel space.
7. The computer-implemented method of claim 3 wherein the datapath process includes a component that manages backend storage.
8. A computer program product residing on a non-transitory computer readable storage medium having a plurality of instructions stored thereon which, when executed across one or more processors, causes at least a portion of the one or more processors to perform operations comprising:
directing an incoming Non-Volatile Memory express (NVMe) command from a Non-Volatile Memory Express Target (NVMET) built-in protocol processor to a kernel driver, wherein the incoming NVMe command is directed by, at least, one or more NVMET transports;
enqueuing, by the kernel driver, the incoming NVMe command until fetched by a user space;
polling, by a component of a datapath process, for the incoming NVMe command;
fetching the NVMe command from the kernel driver for processing by the datapath process; and
pushing the NVMe command to a user space block device of the user space.
9. The computer program product of claim 8 wherein a driver in a kernel space holds the incoming NVMe command until fetched by the datapath process.
10. The computer program product of claim 9 wherein the driver in the kernel space allocates pages that are mapped to the datapath process.
11. The computer program product of claim 9 wherein, when the datapath process completes the NVMe command, the datapath process pushes completion of the NVMe command to the driver in the kernel space.
12. The computer program product of claim 11 wherein, when the datapath process pushes the completion of the NVMe command to the driver in the kernel space, the driver in the kernel space passes the completion of the NVMe command to a host.
13. The computer program product of claim 10 wherein the datapath process includes a component that maps the pages to the kernel space.
14. The computer program product of claim 10 wherein the datapath process includes a component that manages backend storage.
15. A computing system including one or more processors and one or more memories configured to perform operations comprising:
directing an incoming Non-Volatile Memory express (NVMe) command from a Non-Volatile Memory Express Target (NVMET) built-in protocol processor to a kernel driver, wherein the incoming NVMe command is directed by, at least, one or more NVMET transports;
enqueuing, by the kernel driver, the incoming NVMe command until fetched by a user space;
polling, by a component of a datapath process, for the incoming NVMe command;
fetching the NVMe command from the kernel driver for processing by the datapath process; and
pushing the NVMe command to a user space block device of the user space.
16. The computing system of claim 15 wherein a driver in a kernel space holds the incoming NVMe command until fetched by the datapath process.
17. The computing system of claim 16 wherein the driver in the kernel space allocates pages that are mapped to the datapath process.
18. The computing system of claim 16 wherein, when the datapath process completes the NVMe command, the datapath process pushes completion of the NVMe command to the driver in the kernel space.
19. The computing system of claim 18 wherein, when the datapath process pushes the completion of the NVMe command to the driver in the kernel space, the driver in the kernel space passes the completion of the NVMe command to a host.
20. The computing system of claim 17 wherein the datapath process includes at least one of:
a component that maps the pages to the kernel space; and
a component that manages backend storage.