# US 11,115,340 B2 · Guaranteed delivery in receiver side overcommitted communication adapters

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

- Number: US 11,115,340 B2
- Document ID: US11115340B2
- Status: Granted
- Kind: B2
- Application number: 16/018,205
- Filed: 2018-06-26
- Published: 2019-12-26
- Granted: 2021-09-07
- Earliest claimed: 2018-06-26
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Christoph Raisch; Kishorekumar G. Pillai; Alol Antony Crasta; Raghavan Devanathan
- Web page: https://patentgrep.com/patent/US11115340B2

## CPC

- H04L 47/30: in combination with information about buffer occupancy at either end or at transit nodes
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0656: {Data buffering arrangements}
- H04L 49/9005: using dynamic buffer space allocation
- H04L 49/9021: {Plurality of buffers per packet}
- H04L 67/10: in which an application is distributed across nodes in the network (software deployment G06F8/60; multiprogramming arrangements G06F9/46)
- 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]
- H04L 67/568: Storing data temporarily at an intermediate stage, e.g. caching
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

Aspects of the invention include receiving an input/output (I/O) request that includes a data stream from a host processor. The receiving is at a network adapter of a storage controller that manages storage for the host processor. The storage controller includes a storage buffer to store data received from the host processor before migrating it to the storage. The storage controller also includes a data cache. It is determined whether the storage buffer has enough free space to store the received data stream. Based at least in part on determining that the storage buffer has enough free space to store the received data stream, the received data stream is stored by the network adapter in the storage. Based at least in part on determining that the storage buffer does not have enough free space to store the received data stream, the received data stream is stored in the data cache.

## Claims

### Claim 1

A computer-implemented method comprising:
receiving an input/output (I/O) request comprising a data stream from a host processor, the I/O request further comprising look ahead information and a look ahead type field for specifying a type of the look ahead information, the type one of quality of service and anticipated buffer count, the receiving at a network adapter of a storage controller that manages storage for the host processor, the storage controller comprising a storage buffer to store data received from the host processor before migrating it to the storage and the storage controller further comprising a data cache and a control unit;
assigning, by the control unit, a sequence tag to the data stream, the sequence tag indicating an order of receiving the data stream at the network adapter;
determining whether the storage buffer has enough free space to store the received data stream;
storing, by the control unit, the received data stream in the storage buffer based at least in part on determining that the storage buffer has enough free space to store the received data stream;
storing, by the control unit, the received data stream in the data cache based at least in part on determining that the storage buffer does not have enough free space to store the received data stream; and
based at least in part on storing the received data stream in the data cache:
determining an amount of free space in the storage buffer; and
moving the received data stream from the data cache to the storage buffer based on the amount of free space in the storage buffer being greater than an estimated amount of space required to store the received data stream and the sequence tag indicating that the data stream was received prior to any other data stream currently stored in the data cache.

### Claim 2 (depends on 1)

The method of claim 1, wherein the storage is persistent storage.

### Claim 3 (depends on 1)

The method of claim 1, wherein the receiving is via a high performance fibre connection channel.

### Claim 4 (depends on 1)

The method of claim 1, wherein the receiving is via a storage area network (SAN) switch.

### Claim 5 (depends on 1)

The method of claim 1, wherein the data stream is variable in length.

### Claim 6 (depends on 5)

The method of claim 5, wherein the data stream is contained in an information unit (IU) that comprises the estimated amount of space required to store the received data stream.

### Claim 7 (depends on 1)

The method of claim 1, wherein the storage buffer comprises a plurality of buffers and the estimated amount of space required to store the received data stream includes an estimate of a number of the plurality of buffers required to store the received data stream.

### Claim 8 (depends on 1)

The method of claim 1, wherein the data cache stores a plurality of received data streams including the received data stream, and the plurality of received data streams are moved from the data cache to the storage buffer in an order that they were stored in the data cache.

### Claim 9 (depends on 1)

The method of claim 1, wherein the data cache is a pluggable into the storage controller and data is stored in the data cache at wire speed.

### Claim 10

A system comprising:
a memory having computer readable instructions; and
one or more processors for executing the computer readable instructions, the computer readable instructions controlling the one or more processors to perform operations comprising:
receiving an input/output (I/O) request comprising a data stream from a host processor, the I/O request further comprising look ahead information and a look ahead type field for specifying a type of the look ahead information, the type one of quality of service and anticipated buffer count, the receiving at a network adapter of a storage controller that manages storage for the host processor, the storage controller comprising a storage buffer to store data received from the host processor before migrating it to the storage, and the storage controller further comprising a data cache and a control unit;
assigning, by the control unit, a sequence tag to the data stream, the sequence tag indicating an order of receiving the data stream at the network adapter;
determining whether the storage buffer has enough free space to store the received data stream;
storing, by the control unit, the received data stream in the storage buffer based at least in part on determining that the storage buffer has enough free space to store the received data stream;
storing, by the control unit, the received data stream in the data cache based at least in part on determining that the storage buffer does not have enough free space to store the received data stream; and
based at least in part on storing the received data stream in the data cache:
determining an amount of free space in the storage buffer; and
moving the received data stream from the data cache to the storage buffer based on the amount of free space in the storage buffer being greater than an estimated amount of space required to store the received data stream and the sequence tag indicating that the data stream was received prior to any other data stream currently stored in the data cache.

### Claim 11 (depends on 10)

The system of claim 10, wherein the receiving is via a high performance fibre connection channel.

### Claim 12 (depends on 10)

The system of claim 10, wherein the receiving is via a storage area network (SAN) switch.

### Claim 13 (depends on 10)

The system of claim 10, wherein the data stream is variable in length.

### Claim 14 (depends on 10)

The system of claim 10, wherein the data cache stores a plurality of received data streams including the received data stream, and the plurality of received data streams are moved from the data cache to the storage buffer in an order that they were stored in the data cache.

### Claim 15 (depends on 10)

The system of claim 10, wherein the data cache is a pluggable into the storage controller and data is stored in the data cache at wire speed.

### Claim 16

A computer program product comprising a non-transitory computer readable storage medium having program instructions embodied therewith, the program instructions executable by a processor to cause the processor to perform operations comprising:
receiving an input/output (I/O) request comprising a data stream from a host processor, the I/O request further comprising look ahead information and a look ahead type field for specifying a type of the look ahead information, the type one of quality of service and anticipated buffer count, the receiving at a network adapter of a storage controller that manages storage for the host processor, the storage controller comprising a storage buffer to store data received from the host processor before migrating it to the storage, and the storage controller further comprising a data cache and a control unit/O operation on the logical data path;
assigning, by the control unit, a sequence tag to the data stream, the sequence tag indicating an order of receiving the data stream at the network adapter;
determining whether the storage buffer has enough free space to store the received data stream;
storing, by the control unit, the received data stream in the storage buffer based at least in part on determining that the storage buffer has enough free space to store the received data stream;
storing, by the control unit, the received data stream in the data cache based at least in part on determining that the storage buffer does not have enough free space to store the received data stream; and
based at least in part on storing the received data stream in the data cache:
determining an amount of free space in the storage buffer; and
moving the received data stream from the data cache to the storage buffer based on the amount of free space in the storage buffer being greater than an estimated amount of space required to store the received data stream and the sequence tag indicating that the data stream was received prior to any other data stream currently stored in the data cache.

### Claim 17 (depends on 16)

The computer program product of claim 16, wherein the receiving is via a high performance fibre connection channel.

### Claim 18 (depends on 16)

The computer program product of claim 16, wherein the data stream is variable in length and is contained in an information unit (IU) that comprises the estimated amount of space required to store the received data stream.

### Claim 19 (depends on 16)

The computer program product of claim 16, wherein the data cache stores a plurality of received data streams including the received data stream, and the plurality of received data streams are moved from the data cache to the storage buffer in an order that they were stored in the data cache.
