# US 2017/0288696 A1 · Proxying read requests when performance or availability failure is anticipated

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

- Number: US 2017/0288696 A1
- Document ID: US20170288696A1
- Status: Published application
- Kind: A1
- Application number: 15/467,256
- Filed: 2017-03-23
- Published: 2017-10-05
- Earliest claimed: 2016-03-29
- Assignees: International Business Machines Corporation
- Applicants: International Business Machines Corporation
- Inventors: Andrew D. Baptist; Greg R. Dhuse; Ravi V. Khadiwala; Ethan S. Wozniak
- Web page: https://patentgrep.com/patent/US20170288696A1

## CPC

- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/061: {Improving I/O performance}
- G06F 3/0611: {in relation to response time}
- G06F 3/0631: {by allocating resources to storage systems}
- G06F 3/0635: {by changing the path, e.g. traffic rerouting, path reconfiguration}
- G06F 3/064: {Management of blocks}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/0647: {Migration mechanisms}
- 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 8/65: Updates (security arrangements therefor G06F21/57)
- G06F 9/485: {Task life-cycle, e.g. stopping, restarting, resuming execution (G06F9/4881 takes precedence)}
- G06F 9/4881: {Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 11/1092: {Rebuilding, e.g. when physically replacing a failing disk}
- G06F 21/31: User authentication
- H03M 13/05: using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits {(H03M13/2906 takes precedence)}
- H04L 61/10: of different types
- H04L 61/50: Address allocation
- H04L 63/08: {for authentication of entities (cryptographic mechanisms or cryptographic arrangements for entity authentication H04L9/32)}
- H04L 63/104: {Grouping of entities}
- H04L 63/108: {when the policy decisions are valid for a limited amount of time}
- 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/56: Provisioning of proxy services (store-and-forward switching systems in data switching networks H04L12/54)
- G06F 2221/2133: Verifying human interaction, e.g., Captcha
- H03M 13/1515: {Reed-Solomon codes}
- H03M 13/373: {with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes}
- H03M 13/616: {Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)
- H03M: CODING; DECODING; CODE CONVERSION IN GENERAL (using fluidic means F15C4/00; optical analogue/digital converters G02F7/00; coding, decoding or code conversion, specially adapted for particular applications, see the relevant subclasses, e.g. G01D, G01R, G06F, G06T, G09G, G10L, G11B, G11C, H04B, H04L, H04M, H04N; ciphering or deciphering for cryptography or other purposes involving the need for secrecy G09C)
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)

## Abstract

A method includes receiving, by a read threshold number of storage units of a dispersed storage network (DSN), the read threshold number of read requests regarding the read threshold number of encoded data slices of a set of encoded data slices. The method further includes determining, by each storage unit of the read threshold number of storage units, whether the storage unit is capable of processing a respective read request. When a particular storage unit is not capable of processing the respective read request, the method further includes sending, by the particular storage unit, a proxy read request to another storage unit that is not in the read threshold number of storage units. The method further includes determining, by the other storage unit, whether the other storage unit is capable of processing the proxy read request and, when it is, processing the proxy read request.

## Claims

### Claim 1

A method comprises:
receiving, by a read threshold number of storage units of a set of storage units of a dispersed storage network (DSN), a read threshold number of read requests regarding a read threshold number of encoded data slices of a set of encoded data slices, wherein a data segment of a data object is dispersed storage error encoded into the set of encoded data slices, wherein the set of encoded data slices is stored in the set of storage units, and wherein the read threshold number is less than a total number of encoded data slices in the set of encoded data slices and is equal to or greater than a decode threshold number;
determining, by each storage unit of the read threshold number of storage units, whether the storage unit is capable of processing a respective read request of the read threshold number of read requests;
when a particular storage unit of the read threshold number of storage units is not capable of processing the respective read request:
sending, by the particular storage unit, a proxy read request to another storage unit of the set of storage units that is not in the read threshold number of storage units;
determining, by the other storage unit, whether the other storage unit is capable of processing the proxy read request; and
when the other storage unit is capable of processing the proxy read request, processing, by the other storage unit, the proxy read request.

### Claim 2 (depends on 1)

The method of claim 1, wherein the determining whether the storage unit is capable of processing the respective read request comprises one or more of:
determining that the storage unit does not currently store an encoded data slice identified in the respective read request;
determining that the encoded data slice identified in the respective read request is stored in a memory device of the particular storage unit that is currently unavailable; and
determining that processing of the respective read request would exceed a response time threshold.

### Claim 3 (depends on 1)

The method of claim 1 further comprises:
identifying, by the particular storage unit, the other storage unit based on one or more of:
an indication within the respective read request;
the read threshold number of read requests including slice names that identified the read threshold number of encoded data slices;
by executing a distributed agreement protocol function; and
by a look up table.

### Claim 4 (depends on 1)

The method of claim 1, wherein the processing of the proxy read request comprises:
retrieving, by the other storage unit, from a local memory another encoded data slice of the set of encoded data slices that was not included in the read threshold number of encoded data slices; and
sending, by the other storage unit, the other encoded data slice to a requesting computing device.

### Claim 5 (depends on 1)

The method of claim 1, wherein the processing of the proxy read request comprises:
retrieving, by the other storage unit, from a local memory another encoded data slice of the set of encoded data slices that was not included in the read threshold number of encoded data slices;
sending, by the other storage unit, the other encoded data slice to the particular storage unit; and
forwarding, by the particular storage unit, the other encoded data slice to a requesting computing device.

### Claim 6 (depends on 1)

The method of claim 1 further comprises:
notifying, by the particular storage unit or the other storage unit, a requesting computing device of the proxy read request.

### Claim 7 (depends on 1)

The method of claim 1 further comprises:
when the other storage unit is not capable of processing the proxy read request:
sending, by the other storage unit, the proxy read request to yet another storage unit of the set of storage units that is not in the read threshold number of storage units;
determining, by the yet another storage unit, whether the yet another storage unit is capable of processing the proxy read request; and
when the yet another storage unit is capable of processing the proxy read request, processing, by the yet another storage unit, the proxy read request.

### Claim 8 (depends on 7)

The method of claim 7 further comprises:
notifying, by the particular storage unit, the other storage unit, or the yet another storage unit, a requesting computing device of the proxy read request being processed by the yet another storage unit.

### Claim 9

A computer readable memory device comprises:
a first memory section that stores operational instructions that, when executed by a read threshold number of storage units of a set of storage units of a dispersed storage network (DSN), causes the read threshold number of storage units to:
receive a read threshold number of read requests regarding a read threshold number of encoded data slices of a set of encoded data slices, wherein a data segment of a data object is dispersed storage error encoded into the set of encoded data slices, wherein the set of encoded data slices is stored in the set of storage units, and wherein the read threshold number is less than a total number of encoded data slices in the set of encoded data slices and is equal to or greater than a decode threshold number;
a second memory section that stores operational instructions that, when executed by each storage unit of the read threshold number of storage units, causes each storage unit of the read threshold number of storage units to:
determine whether the storage unit is capable of processing a respective read request of the read threshold number of read requests;
a third memory section that stores operational instructions that, when executed by a particular storage unit of the read threshold number of storage units, causes the particular storage unit to:
send a proxy read request to another storage unit of the set of storage units that is not in the read threshold number of storage units when the particular storage unit is not capable of processing the respective read request;
a fourth memory section that stores operational instructions that, when executed by the other storage unit, causes the other storage unit to:
determine whether the other storage unit is capable of processing the proxy read request; and
when the other storage unit is capable of processing the proxy read request, process the proxy read request.

### Claim 10 (depends on 9)

The computer readable memory device of claim 9, wherein the second memory section further stores operational instructions that, when executed by each storage unit of the read threshold number of storage units, causes each storage unit of the read threshold number of storage units to determine whether the storage unit is capable of processing the respective read request by one or more of:
determining that the storage unit does not currently store an encoded data slice identified in the respective read request;
determining that the encoded data slice identified in the respective read request is stored in a memory device of the particular storage unit that is currently unavailable; and
determining that processing of the respective read request would exceed a response time threshold.

### Claim 11 (depends on 9)

The computer readable memory device of claim 9, wherein the third memory section further stores operational instructions that, when executed by the particular storage unit, causes the particular storage unit to:
identifying, by the particular storage unit, the other storage unit based on one or more of:
an indication within the respective read request;
the read threshold number of read requests including slice names that identified the read threshold number of encoded data slices;
by executing a distributed agreement protocol function; and
by a look up table.

### Claim 12 (depends on 9)

The computer readable memory device of claim 9, wherein the fourth memory section that stores operational instructions that, when executed by the other storage unit, causes the other storage unit to process the proxy read request by:
retrieving from a local memory another encoded data slice of the set of encoded data slices that was not included in the read threshold number of encoded data slices; and
sending, by the other storage unit, the other encoded data slice to a requesting computing device.

### Claim 13 (depends on 9)

The computer readable memory device of claim 9 further comprises:
the fourth memory section further stores operational instructions that, when executed by the other storage unit, causes the other storage unit to process the proxy read request by:
retrieving from a local memory another encoded data slice of the set of encoded data slices that was not included in the read threshold number of encoded data slices;
sending the other encoded data slice to the particular storage unit; and
the third memory section further stores operational instructions that, when executed by the particular storage unit, causes the particular storage unit to:
forward the other encoded data slice to a requesting computing device.

### Claim 14 (depends on 9)

The computer readable memory device of claim 9, wherein the third or fourth memory section further stores operational instructions that, when executed by the particular storage unit or the other storage unit, causes the particular storage unit or the other storage unit to:
notify a requesting computing device of the proxy read request.

### Claim 15 (depends on 9)

The computer readable memory device of claim 9 further comprises:
the fourth memory section further stores operational instructions that, when executed by the other storage unit, causes the other storage unit to:
send the proxy read request to yet another storage unit of the set of storage units that is not in the read threshold number of storage units when the other storage unit is not capable of processing the proxy read request;
a fifth memory section that stores operational instructions that, when executed by the yet another storage unit, causes the yet another storage unit to:
determine whether the yet another storage unit is capable of processing the proxy read request; and
when the yet another storage unit is capable of processing the proxy read request, process the proxy read request.

### Claim 16 (depends on 15)

The computer readable memory device of claim 15, wherein the third, fourth, or fifth memory section further stores operational instructions that, when executed by the particular storage unit, the other storage unit, or the yet another storage units, causes the particular storage unit, the other storage unit, or the yet another storage unit to:
notify a requesting computing device of the proxy read request being processed by the yet another storage unit.
