# US 2024/0201849 A1 · Producing Recovered Data in a Storage Network

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

- Number: US 2024/0201849 A1
- Document ID: US20240201849A1
- Status: Published application
- Kind: A1
- Application number: 18/592,710
- Filed: 2024-03-01
- Published: 2024-06-20
- Earliest claimed: 2014-02-26
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Bruno H. Cabral; Wesley B. Leggette
- Web page: https://patentgrep.com/patent/US20240201849A1

## CPC

- G06F 3/0604: {Improving or facilitating administration, e.g. storage management}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/0644: {Management of space entities, e.g. partitions, extents, pools}
- G06F 3/0659: {Command handling arrangements, e.g. command buffers, queues, command scheduling}
- G06F 3/0661: {Format or protocol conversion arrangements}
- G06F 3/067: {Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]}
- 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/62: Protecting access to data via a platform, e.g. using keys or access control rules
- G06F 21/64: Protecting data integrity, e.g. using checksums, certificates or signatures
- H03M 7/6011: {Encoder aspects}
- H04L 1/00: Arrangements for detecting or preventing errors in the information received {(correcting synchronisation H04L7/00)}
- H04L 1/0045: {Arrangements at the receiver end}
- H04L 1/0057: {Block codes (H04L1/0061, H04L1/0064 take precedence)}
- H04L 1/0076: {Distributed coding, e.g. network coding, involving channel coding (coding in both space and time H04L1/0618; cooperative diversity H04B7/022)}
- H04L 9/085: {Secret sharing or secret splitting, e.g. threshold schemes}
- H04L 9/0894: {Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage}
- H04L 63/10: {for controlling access to devices or network resources}
- H04L 63/101: {Access control lists [ACL]}
- H04L 63/102: {Entity profiles}
- H04L 67/06: specially adapted for file transfer, e.g. file transfer protocol [FTP]
- 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/565: Conversion or adaptation of application format or content (adding application control or application functional data H04L67/561)
- G06F 2211/1028: Distributed, i.e. distributed RAID systems with parity
- G06F 2212/254: Distributed memory
- H03M 13/1515: {Reed-Solomon codes}
- H03M 13/616: {Matrix operations, especially for generator matrices or check matrices, e.g. column or row permutations}
- H04L 63/12: {Applying verification of the received information (cryptographic mechanisms or cryptographic arrangements for data integrity or data verification H04L9/32)}
- H04L 2209/30: Compression, e.g. Merkle-Damgard construction
- H04L 2209/34: Encoding or coding, e.g. Huffman coding or error correction
- H04L 2209/608: Watermarking
- 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 storage network operates by: issuing read slice requests to storage units of a set of storage units, where the read slice requests identify at least a read threshold number of encoded slices of a set of encoded slices corresponding to a data segment; when less than the read threshold number of encoded slices are received within a time threshold, facilitating receiving a decode threshold number of encoded slices of the set of encoded slices; decoding the decode threshold number of encoded slices to produce recovered encoded data slices, wherein a number of the recovered encoded data slices corresponds to the read threshold number minus a number of the encoded slices received within the time threshold; and outputting the recovered encoded data slices and the encoded slices of the read threshold number of encoded slices received within the time threshold.

## Claims

### Claim 1

A method comprises:
issuing read slice requests to storage units of a set of storage units, where the read slice requests identify at least a read threshold number of encoded slices of a set of encoded slices corresponding to a data segment;
when less than the read threshold number of encoded slices are received within a time threshold, facilitating receiving a decode threshold number of encoded slices of the set of encoded slices;
decoding the decode threshold number of encoded slices to produce recovered encoded data slices, wherein a number of the recovered encoded data slices corresponds to the read threshold number minus a number of the encoded slices received within the time threshold; and
outputting the recovered encoded data slices and the encoded slices of the read threshold number of encoded slices received within the time threshold.

### Claim 2 (depends on 1)

The method of claim 1, wherein the data segment was dispersed storage error encoded to produce the set of encoded slices.

### Claim 3 (depends on 1)

The method of claim 1, wherein the set of encoded slices for the corresponding data segment includes a first subset of encoded data slices and includes a second subset of encoded code slices, wherein the first subset and the second subset are mutually exclusive and collectively exhaustive with respect to the set of encoded slices, wherein the encoded data slices received within response timeframe are elements of the first subset and wherein at least one of the recovered encoded data slices is an element of the second subset.

### Claim 4 (depends on 3)

The method of claim 3, wherein a size of the first subset corresponds the decode threshold number.

### Claim 5 (depends on 3)

The method of claim 3, further comprising
determining a subset of the set of encoded slices received within the time threshold;
determining a number of necessary remaining slices based on subtracting a size of the subset from the decode threshold number; and
generating a set of additional requests for transmission to the storage units of the set of storage units, wherein a number of additional requests of the set is equal to the number of necessary remaining slices, and wherein the set of additional requests indicate encoded code slices of the second subset.

### Claim 6 (depends on 5)

The method of claim 5, wherein no additional requests are transmitted to the storage units of the set of storage units in response to number of necessary remaining slices being determined to be equal to zero.

### Claim 7 (depends on 3)

The method of claim 3, wherein the read threshold number of read slice requests is determined by selecting an entirety of the first subset to be included in the read threshold number of read slice requests.

### Claim 8 (depends on 1)

The method of claim 1, wherein outputting of the recovered encoded data slices and the encoded slices of the read threshold number of encoded slices received within the time threshold is in accordance with a data slice ordering, and wherein the data slice ordering is based on consecutive data of the corresponding data segment.

### Claim 9 (depends on 8)

The method of claim 8, wherein the read threshold number of read slice requests to storage units are transmitted consecutively at a corresponding plurality of different times in an order corresponding to the data slice ordering.

### Claim 10 (depends on 8)

The method of claim 8, wherein a requesting entity reproduces the data segment in accordance with the data slice ordering.

### Claim 11

A processing system comprises:
at least one processor; and
a memory that stores operational instructions, that when executed by the at least one processor, cause the processing system to perform operations that include:
issuing read slice requests to storage units of a set of storage units, where the read slice requests identify at least a read threshold number of encoded slices of a set of encoded slices corresponding to a data segment;
when less than the read threshold number of encoded slices are received within a time threshold, facilitating receiving a decode threshold number of encoded slices of the set of encoded slices;
decoding the decode threshold number of encoded slices to produce recovered encoded data slices, wherein a number of the recovered encoded data slices corresponds to the read threshold number minus a number of the encoded slices received within the time threshold; and
outputting the recovered encoded data slices and the encoded slices of the read threshold number of encoded slices received within the time threshold.

### Claim 12 (depends on 11)

The processing system of claim 11, wherein the data segment was dispersed storage error encoded to produce the set of encoded slices.

### Claim 13 (depends on 11)

The processing system of claim 11, wherein the set of encoded slices for the corresponding data segment includes a first subset of encoded data slices and includes a second subset of encoded code slices, wherein the first subset and the second subset are mutually exclusive and collectively exhaustive with respect to the set of encoded slices, wherein the encoded data slices received within response timeframe are elements of the first subset and wherein at least one of the recovered encoded data slices is an element of the second subset.

### Claim 14 (depends on 13)

The processing system of claim 13, wherein a size of the first subset corresponds the decode threshold number.

### Claim 15 (depends on 13)

The processing system of claim 13, wherein the operations further include:
determining a subset of the set of encoded slices received within the time threshold;
determining a number of necessary remaining slices based on subtracting a size of the subset from the decode threshold number; and
generating a set of additional requests for transmission to the storage units of the set of storage units, wherein a number of additional requests of the set is equal to the number of necessary remaining slices, and wherein the set of additional requests indicate encoded code slices of the second subset.

### Claim 16 (depends on 15)

The processing system of claim 15, wherein no additional requests are transmitted to the storage units of the set of storage units in response to number of necessary remaining slices being determined to be equal to zero.

### Claim 17 (depends on 13)

The processing system of claim 13, wherein the read threshold number of read slice requests is determined by selecting an entirety of the first subset to be included in the read threshold number of read slice requests.

### Claim 18 (depends on 11)

The processing system of claim 11, wherein outputting of the recovered encoded data slices and the encoded slices of the read threshold number of encoded slices received within the time threshold is in accordance with a data slice ordering, and wherein the data slice ordering is based on consecutive data of the corresponding data segment.

### Claim 19 (depends on 18)

The processing system of claim 18, wherein the read threshold number of read slice requests to storage units are transmitted consecutively at a corresponding plurality of different times in an order corresponding to the data slice ordering.

### Claim 20 (depends on 18)

The processing system of claim 18, wherein a requesting entity reproduces the data segment in accordance with the data slice ordering.
