# US 10,788,992 B2 · System and method for efficient access for remote storage devices

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 10,788,992 B2
- Document ID: US10788992B2
- Status: Granted
- Kind: B2
- Application number: 15/975,379
- Filed: 2018-05-09
- Published: 2018-09-13
- Granted: 2020-09-29
- Earliest claimed: 2014-07-30
- Assignees: Excelero Storage Ltd.
- Applicants: Excelero Storage Ltd.
- Inventors: Yaniv Romem; Omri Mann; Ofer Oshri
- Web page: https://patentgrep.com/patent/US10788992B2

## CPC

- G06F 3/0611: {in relation to response time}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0637: {Permissions}
- G06F 3/064: {Management of blocks}
- G06F 3/0647: {Migration mechanisms}
- G06F 3/065: {Replication mechanisms}
- G06F 3/0652: {Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- G06F 3/0688: {Non-volatile semiconductor memory arrays}
- G06F 3/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 12/1081: for peripheral access to main memory, e.g. direct memory access [DMA]
- G06F 15/167: using a common memory, e.g. mailbox
- G06F 15/17331: {Distributed shared memory [DSM], e.g. remote direct memory access [RDMA]}
- H04L 12/06: Answer-back mechanisms or circuits
- H04L 12/6418: {Hybrid transport}
- H04L 67/1097: for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
- G06F 2212/65: Details of virtual memory and virtual address translation
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A client device for accessing remote storage devices. The client device includes: a processing unit communicatively connected to: a network interface and a memory; the network interface configured to communicatively connect the client device to a network comprising the client device and a storage server, the storage server comprising one or more storage devices, a remote direct memory access network interface controller (rNIC), and a primary processing unit; the memory containing instructions, that, when executed by the processing unit, configure the client device to: send an input/output (I/O) request for a storage device of the one or more storage devices; receive an indication from the rNIC based on the sent I/O request, the indication including an interrupt generated by the rNIC in response to the I/O request.

## Claims

### Claim 1

A client device for accessing remote storage devices, the client device comprising:
a processing unit communicatively connected to a network interface and a memory;
wherein the network interface is configured to communicatively connect the client device to a network comprising the client device and a storage server, the storage server comprising at least one storage device, a remote direct memory access network interface controller (rNIC), and a primary processing unit;
the memory containing instructions, that, when executed by the processing unit, configure the client device to:
send an input/output (I/O) request for a storage device of the one or more storage devices;
receive an indication from the rNIC based on the sent I/O request, the indication including an interrupt generated by the rNIC in response to the I/O request, wherein the indication received from the rNIC indicates if the I/O request has been either completed or not completed, wherein the interrupt is generated by the rNIC in response to the rNIC sending the I/O request to the storage device and intercepting, from the storage device, a response respective of the I/O request intended for the primary processing unit.

### Claim 2 (depends on 1)

The client device of claim 1, wherein the I/O request includes at least one of: a storage device identifier, a storage block, a storage address, and data to be written to at least one of the at least one storage device.

### Claim 3 (depends on 1)

The client device of claim 1, wherein the indication is received before the I/O request has been executed in its entirety by the storage device.

### Claim 4 (depends on 1)

The client device of claim 1, wherein the client device is further configured to:
receive a response respective of the I/O request.

### Claim 5 (depends on 4)

The client device of claim 4, wherein the received response is stored directly in the memory of the client device.

### Claim 6 (depends on 1)

The client device of claim 1, wherein the client device is configured to support remote direct memory access (RDMA) protocol by the rNIC.

### Claim 7

A non-transitory computer readable medium having stored thereon instructions for causing a processing circuitry to perform a process, the process comprising:
sending an input/output (I/O) request for a storage device of at least one storage device over a network connection; and
receiving an indication from a remote direct memory access network interface controller (rNIC), the indication including an interrupt generated by the rNIC in response to the I/O request, wherein the indication received from the rNIC indicates if the I/O request has been either completed or not completed, wherein the interrupt is generated by the rNIC in response to the rNIC sending the I/O request to the storage device and intercepting, from the storage device, a response respective of the I/O request intended for the primary processing unit.

### Claim 8

A method for providing a client device remote access to a storage server controlling at least one storage device by a network interface controller (NIC) comprising a processor, a first memory and a second memory, the method comprising:
sending an input/output (I/O) request for a storage device of at least one storage device over a network connection; and
receiving an indication from a remote direct memory access network interface controller (rNIC), the indication including an interrupt generated by the rNIC in response to the I/O request, wherein the indication received from the rNIC indicates if the I/O request has been either completed or not completed, wherein the interrupt is generated by the rNIC in response to the rNIC sending the I/O request to the storage device and intercepting, from the storage device, a response respective of the I/O request intended for the primary processing unit.

### Claim 9 (depends on 8)

The method of claim 8, wherein the I/O request includes at least one of: a storage device identifier, a storage block, a storage address, and data to be written to at least one of the at least one storage device.

### Claim 10 (depends on 8)

The method of claim 8, wherein the indication received from the rNIC indicates if the I/O request has been either completed or not completed.

### Claim 11 (depends on 8)

The method of claim 8, wherein the indication is received before the I/O request has been executed in its entirety by the storage device.

### Claim 12 (depends on 8)

The method of claim 8, further comprising:
receiving a response respective of the I/O request.
