# US 12,222,959 B2 · Storage network for rebuilding encoded data slices and processing system for use therewith

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

- Number: US 12,222,959 B2
- Document ID: US12222959B2
- Status: Granted
- Kind: B2
- Application number: 18/348,498
- Filed: 2023-07-07
- Published: 2023-11-02
- Granted: 2025-02-11
- Earliest claimed: 2012-09-13
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Asimuddin Kazi; Jason K. Resch
- Web page: https://patentgrep.com/patent/US12222959B2

## CPC

- G06F 16/273: {Asynchronous replication or reconciliation}
- G06F 3/0619: {in relation to data integrity, e.g. data losses, bit errors}
- G06F 3/064: {Management of blocks}
- 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/0689: {Disk arrays, e.g. RAID, JBOD}
- G06F 11/1076: {Parity data used in redundant arrays of independent storages, e.g. in RAID systems}
- G06F 16/178: Techniques for file synchronisation in file systems
- G06F 16/27: Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
- 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/34: {involving the movement of software or configuration parameters (network booting or remote initial program loading [RIPL] G06F9/4416)}
- 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 storage network operates by: encoding, via a dispersed error encoding, at least one data object as a write threshold number of encoded data slices; storing the write threshold number of the encoded data slices in a set of storage units of the storage network; determining when, due to a failure, less than a pillar width number of the encoded data slices are retrievable from the set of storage units: retrieving a decode threshold number of the encoded data slices from others of the set of storage units; decoding the decode threshold number of the encoded data slices to reproduce the at least one data object; restoring availability of the pillar width number of the encoded data slices of the common revision by: rebuilding at least a subset of encoded data slices of the set of encoded data slices, based on an encoding of the at least one data object; and storing the at least a subset of encoded data slices in the storage network.

## Claims

### Claim 1

A method for execution by a processor of a storage network, the method comprises:
encoding, via a dispersed error encoding, at least one data object as a write threshold number of encoded data slices;
storing the write threshold number of the encoded data slices in a set of storage units of the storage network;
determining when, less than a pillar width number of the encoded data slices of a common revision are retrievable from the set of storage units:
retrieving a decode threshold number of the encoded data slices from others of the set of storage units;
decoding the decode threshold number of the encoded data slices to reproduce the at least one data object;
restoring availability of the pillar width number of the encoded data slices by:
rebuilding at least a subset of encoded data slices of the set of encoded data slices, based on an encoding of the at least one data object; and
storing the at least a subset of encoded data slices in the storage network.

### Claim 2 (depends on 1)

The method of claim 1, wherein determining when less than the pillar width number of encoded data slices are available includes invoking a list query to the set of storage units and comparing query responses received from the set of storage units.

### Claim 3 (depends on 1)

The method of claim 1, wherein retrieving the decode threshold number of encoded data slices includes generating at least the decode threshold number of read slice requests for transmission to the set of storage units, and receiving the at least the decode threshold number of encoded data slices from the set of storage units in response.

### Claim 4 (depends on 1)

The method of claim 1, further comprising: identifying dispersal parameters associated with the set of encoded data slices, wherein the dispersal parameters include the decode threshold number.

### Claim 5 (depends on 4)

The method of claim 4, wherein identifying the dispersal parameters includes reading an encoded data slice of the set of encoded data slices and extracting the dispersal parameters from the encoded data slice.

### Claim 6 (depends on 5)

The method of claim 5, wherein retrieving the decode threshold number of encoded data slices is performed when the less than the pillar width number includes at least the decode threshold number of encoded data slices.

### Claim 7 (depends on 6)

The method of claim 6, further comprising:
determining whether to rebuild the subset of encoded data slices of the set of encoded data slices based on determining whether combining the at least one encoded data slice with the less than the pillar width number of encoded data slices reforms a full pillar width number of encoded data slices.

### Claim 8 (depends on 7)

The method of claim 7, further comprising:
encoding the at least one data object to reproduce the set of encoded data slices and facilitating storage of the reproduced set of encoded data slices in the set of storage units in accordance with a new revision when it is determined to not rebuild the subset of encoded data slices of the set of encoded data slices.

### Claim 9 (depends on 7)

The method of claim 7, wherein determining whether to rebuild the at least one encoded data slice is further based on a reliability goal.

### Claim 10

A processing system of a storage network comprises:
at least one processor;
at least one memory that stores operational instructions, that when executed by the at least one processor cause the processing system to perform operations that include:
encoding, via a dispersed error encoding, at least one data object as a write threshold number of encoded data slices;
storing the write threshold number of the encoded data slices in a set of storage units of the storage network;
determining when, less than a pillar width number of the encoded data slices of a common revision are retrievable from the set of storage units:
retrieving a decode threshold number of the encoded data slices from others of the set of storage units;
decoding the decode threshold number of the encoded data slices to reproduce the at least one data object;
restoring availability of the pillar width number of the encoded data slices by:
rebuilding at least a subset of encoded data slices of the set of encoded data slices, based on an encoding of the at least one data object; and
storing the at least a subset of encoded data slices in the storage network.

### Claim 11 (depends on 10)

The processing system of claim 10, wherein determining when less than the pillar width number of encoded data slices are available includes invoking a list query to the set of storage units and comparing query responses received from the set of storage units.

### Claim 12 (depends on 10)

The processing system of claim 10, wherein retrieving the decode threshold number of encoded data slices includes generating at least the decode threshold number of read slice requests for transmission to the set of storage units, and receiving the at least the decode threshold number of encoded data slices from the set of storage units in response.

### Claim 13 (depends on 10)

The processing system of claim 10, wherein the operations further include: identifying dispersal parameters associated with the set of encoded data slices, wherein the dispersal parameters include the decode threshold number.

### Claim 14 (depends on 13)

The processing system of claim 13, wherein identifying the dispersal parameters includes reading an encoded data slice of the set of encoded data slices and extracting the dispersal parameters from the encoded data slice.

### Claim 15 (depends on 14)

The processing system of claim 14, wherein retrieving the decode threshold number of encoded data slices is performed when the less than the pillar width number includes at least the decode threshold number of encoded data slices.

### Claim 16 (depends on 15)

The processing system of claim 15, wherein the operations further include:
determining whether to rebuild the subset of encoded data slices of the set of encoded data slices based on determining whether combining the at least one encoded data slice with the less than the pillar width number of encoded data slices reforms a full pillar width number of encoded data slices.

### Claim 17 (depends on 16)

The processing system of claim 16, wherein the operations further include:
encoding the at least one data object to reproduce the set of encoded data slices and facilitating storage of the reproduced set of encoded data slices in the set of storage units in accordance with a new revision when it is determined to not rebuild the subset of encoded data slices of the set of encoded data slices.

### Claim 18 (depends on 16)

The processing system of claim 16, wherein determining whether to rebuild the at least one encoded data slice is further based on a reliability goal.
