# US 12,222,863 B1 · Storage system with efficient data prefetch for multiple storage controllers

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

- Number: US 12,222,863 B1
- Document ID: US12222863B1
- Status: Granted
- Kind: B1
- Application number: 18/398,324
- Filed: 2023-12-28
- Granted: 2025-02-11
- Earliest claimed: 2023-12-28
- Assignees: Dell Products L.P.
- Applicants: Dell Products L.P.
- Inventors: Ramesh Doddaiah; Arieh Don; Sanjib Mallick; Vinay G. Rao
- Web page: https://patentgrep.com/patent/US12222863B1

## CPC

- G06F 12/0862: with prefetch
- G06F 2212/6026: Prefetching based on access pattern detection, e.g. stride based prefetch
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An apparatus in an illustrative embodiment comprises at least one processing device, with the processing device being configured to receive in a storage system from a host device an indication of a data size utilized in a multi-path layer of the host device to select paths for delivery of input-output operations to different storage controllers of the storage system, to determine in the storage system a prefetch data size based at least in part on the data size indication received from the host device, and responsive to detection in the storage system of sequential data reads in input-output operations received from the host device, to prefetch from one or more backend storage devices of the storage system, into a memory associated with a particular one of the storage controllers of the storage system, an amount of data that is determined based at least in part on the prefetch data size.

## Claims

### Claim 1

An apparatus comprising:
at least one processing device comprising a processor coupled to a memory;
the at least one processing device being configured:
to receive in a storage system from at least one host device an indication of a data size utilized in a multi-path layer of the host device to select paths for delivery of input-output operations to different storage controllers of the storage system;
to determine in the storage system a prefetch data size based at least in part on the data size indication received from the host device; and
responsive to detection in the storage system of sequential data reads in input-output operations received from the host device, to prefetch from one or more backend storage devices of the storage system, into a memory associated with a particular one of the storage controllers of the storage system, an amount of data that is determined based at least in part on the prefetch data size.

### Claim 2 (depends on 1)

The apparatus of claim 1 wherein the at least one processing device comprises at least a portion of the storage system.

### Claim 3 (depends on 1)

The apparatus of claim 1 wherein the data size indication received from the host device comprises a particular data size value.

### Claim 4 (depends on 3)

The apparatus of claim 3 wherein the particular data size value comprises an indication of a particular number of data blocks of at least one designated block size.

### Claim 5 (depends on 3)

The apparatus of claim 3 wherein the prefetch data size is set to the particular data size value.

### Claim 6 (depends on 1)

The apparatus of claim 1 wherein the data size indication is provided from the host device to the storage system utilizing at least one of a log select command and a mode select command issued by the host device.

### Claim 7 (depends on 1)

The apparatus of claim 1 wherein the data size indication received from the host device specifies an amount of sequential read data after which at least one multi-path input-output driver of the host device will switch from sending input-output operations over at least one path to one of the storage controllers of the storage system to sending input-output operations over at least one path to another one of the storage controllers of the storage system.

### Claim 8 (depends on 7)

The apparatus of claim 7 wherein the switching from sending input-output operations over at least one path to one of the storage controllers to sending input-output operations over at least one path to another one of the storage controllers is performed in accordance with an adaptive load balancing policy of the multi-path input-output driver in which the other one of the storage controllers to which the multi-path input-output driver will switch is unknown to the storage system prior to that switch.

### Claim 9 (depends on 1)

The apparatus of claim 1 wherein the storage controllers of the storage system comprise respective directors of the storage system.

### Claim 10 (depends on 1)

The apparatus of claim 1 wherein the storage system detects the sequential data reads in conjunction with receipt of input-output operations directed to a first one of the storage controllers, and in response thereto prefetches an amount of data given by the prefetch data size into a first memory associated with the first storage controller.

### Claim 11 (depends on 10)

The apparatus of claim 10 wherein the storage system subsequently detects additional sequential data reads in conjunction with receipt of input-output operations directed to a second one of the storage controllers, and in response thereto transfers a remaining unread portion of the amount of data prefetched into the first memory associated with the first storage controller into a second memory associated with the second storage controller.

### Claim 12

A computer program product comprising a non-transitory processor-readable storage medium having stored therein program code of one or more software programs, wherein the program code, when executed by at least one processing device comprising a processor coupled to a memory, causes the at least one processing device:
to receive in a storage system from at least one host device an indication of a data size utilized in a multi-path layer of the host device to select paths for delivery of input-output operations to different storage controllers of the storage system;
to determine in the storage system a prefetch data size based at least in part on the data size indication received from the host device; and
responsive to detection in the storage system of sequential data reads in input-output operations received from the host device, to prefetch from one or more backend storage devices of the storage system, into a memory associated with a particular one of the storage controllers of the storage system, an amount of data that is determined based at least in part on the prefetch data size.

### Claim 13 (depends on 12)

The computer program product of claim 12 wherein the data size indication received from the host device specifies an amount of sequential read data after which at least one multi-path input-output driver of the host device will switch from sending input-output operations over at least one path to one of the storage controllers of the storage system to sending input-output operations over at least one path to another one of the storage controllers of the storage system.

### Claim 14 (depends on 12)

The computer program product of claim 12 wherein the storage system detects the sequential data reads in conjunction with receipt of input-output operations directed to a first one of the storage controllers, and in response thereto prefetches an amount of data given by the prefetch data size into a first memory associated with the first storage controller.

### Claim 15 (depends on 14)

The computer program product of claim 14 wherein the storage system subsequently detects additional sequential data reads in conjunction with receipt of input-output operations directed to a second one of the storage controllers, and in response thereto transfers a remaining unread portion of the amount of data prefetched into the first memory associated with the first storage controller into a second memory associated with the second storage controller.

### Claim 16

A method comprising:
receiving in a storage system from at least one host device an indication of a data size utilized in a multi-path layer of the host device to select paths for delivery of input-output operations to different storage controllers of the storage system;
determining in the storage system a prefetch data size based at least in part on the data size indication received from the host device; and
responsive to detection in the storage system of sequential data reads in input-output operations received from the host device, prefetching from one or more backend storage devices of the storage system, into a memory associated with a particular one of the storage controllers of the storage system, an amount of data that is determined based at least in part on the prefetch data size.

### Claim 17 (depends on 16)

The method of claim 16 wherein the data size indication received from the host device specifies an amount of sequential read data after which at least one multi-path input-output driver of the host device will switch from sending input-output operations over at least one path to one of the storage controllers of the storage system to sending input-output operations over at least one path to another one of the storage controllers of the storage system.

### Claim 18 (depends on 17)

The method of claim 17 wherein the switching from sending input-output operations over at least one path to one of the storage controllers to sending input-output operations over at least one path to another one of the storage controllers is performed in accordance with an adaptive load balancing policy of the multi-path input-output driver in which the other one of the storage controllers to which the multi-path input-output driver will switch is unknown to the storage system prior to that switch.

### Claim 19 (depends on 16)

The method of claim 16 wherein the storage system detects the sequential data reads in conjunction with receipt of input-output operations directed to a first one of the storage controllers, and in response thereto prefetches an amount of data given by the prefetch data size into a first memory associated with the first storage controller.

### Claim 20 (depends on 19)

The method of claim 19 wherein the storage system subsequently detects additional sequential data reads in conjunction with receipt of input-output operations directed to a second one of the storage controllers, and in response thereto transfers a remaining unread portion of the amount of data prefetched into the first memory associated with the first storage controller into a second memory associated with the second storage controller.
