| CPC G06F 3/0689 (2013.01) [G06F 3/0613 (2013.01); G06F 3/0631 (2013.01); G06F 3/0659 (2013.01); G06F 3/067 (2013.01)] | 17 Claims |

|
1. A device comprising:
a software stack comprising application programming interfaces (APIs), wherein each API is associated with a different I/O pipeline of multiple I/O pipelines and enables a single respective type of I/O memory operation from among a plurality of types of I/O memory operations available to the respective pipeline to be performed on behalf of a client device; and
a processing component that isolates at least one storage device from the software stack, the processing component being configured to:
receive an input/output (I/O) memory operation over a first I/O pipeline of the multiple I/O pipelines and via a first API of the software stack used for the first I/O pipeline, the I/O memory operation comprising either a read request to read data from the at least one storage device on behalf of the client device or a write request to write data to the at least one storage device on behalf of the client device;
determine that an address associated with the I/O memory operation exists in a lookup table that is provided for dynamic storage allocation within the at least one storage device; determine an address within the at least one storage device based on the address associated with the I/O memory operation;
generate an I/O memory command to either read data from or write data to the address within the at least one storage device; and
in the event of an error that occurs subsequent to receiving the I/O memory operation, pass the I/O memory operation off to the first API for the first API to resolve or report the error.
|