US 12,147,716 B2
Methods and systems for inter-stack communication for logical volume management
Omri Kahalon, Yokneam (IL); Gal Shalom, Givat Avni (IL); Aviad Yehezkel, Yokneam Ilit (IL); Liran Liss, Atzmon-Segev (IL); Oren Duer, Kohav Yair (IL); Rabie Loulou, Nazareth (IL); and Maxim Gurtovoy, Tel Aviv (IL)
Assigned to MELLANOX TECHNOLOGIES, LTD., Yokneam (IL)
Filed by MELLANOX TECHNOLOGIES, LTD., Yokneam (IL)
Filed on Jan. 27, 2022, as Appl. No. 17/586,417.
Prior Publication US 2023/0236769 A1, Jul. 27, 2023
Int. Cl. G06F 3/00 (2006.01); G06F 3/06 (2006.01)
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
OG exemplary drawing
 
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.