# US 11,442,921 B1 · Data access in a dispersed storage network with consistency

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

- Number: US 11,442,921 B1
- Document ID: US11442921B1
- Status: Granted
- Kind: B1
- Application number: 16/547,921
- Filed: 2019-08-22
- Granted: 2022-09-13
- Earliest claimed: 2014-09-05
- Assignees: Pure Storage, Inc.
- Applicants: Pure Storage, Inc.
- Inventors: Kumar Abhijeet; Andrew D. Baptist; Wesley B. Leggette; Greg R. Dhuse; Jason K. Resch; Manish Motwani
- Web page: https://patentgrep.com/patent/US11442921B1

## CPC

- G06F 16/2365: {Ensuring data consistency and integrity}
- G06F 9/5083: {Techniques for rebalancing the load in a distributed system}
- 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]
- 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 method is presented for execution by a processing system of a dispersed storage and task (DST) processing unit that includes a processor. The method includes: receiving, at the processor, a data access request having a consistency indicator; identifying, via the processor, a set of two or more storage targets associated with the data access request; selecting, via the processor, a threshold number of storage targets of the set of two or more storage targets, based on the consistency indicator; accessing, via the processor, the selected threshold number of storage targets based on the data access request; and generating a data access response, via the processor, based on the accessing of the selected threshold number of storage targets.

## Claims

### Claim 1

A method for execution by a processing system that includes a processor, the method comprises:
receiving a data access request having a consistency indicator;
identifying, via the processor, a set of two or more storage targets associated with the data access request, wherein each storage target of the set of two or more storage targets includes at least a decode threshold number of storage units;
selecting, via the processor, a threshold number of storage targets of the set of two or more storage targets, based on the consistency indicator;
accessing, via the processor, the selected threshold number of storage targets based on the data access request;
generating, via the processor, a data access response, based on the accessing of the selected threshold number of storage targets;
transferring a range of encoded data slices from a first storage unit of the storage units to a second storage unit of the storage units; and
in response to the transferring the range of encoded data slices from the first storage unit to the second storage unit, transferring a corresponding range of second encoded data slices from a third storage unit of the storage units to a fourth storage unit of the storage units, wherein the second encoded data slices have a second common addressing component within addresses of the second encoded data slices, wherein the third storage unit stores a first sub-set of the second encoded data slices and the fourth storage unit stores a second sub-set of the second encoded data slices, wherein the range of second encoded data slices includes at least some of the first sub-set of the second encoded data slices, and wherein the range of second encoded data slices is identified by a second corresponding slice address range that includes a range of the addresses of the at least some of the first sub-set of the second encoded data slices.

### Claim 2 (depends on 1)

The method of claim 1, wherein the consistency indicator indicates the threshold number of storage targets.

### Claim 3 (depends on 1)

The method of claim 1 wherein, when the data access request corresponds to a write request, the threshold number of storage targets corresponds to a write storage target threshold, when the data access request corresponds to a read request, the threshold number of storage targets corresponds to a read storage target threshold, and wherein a sum of the write storage target threshold and the read storage target threshold is greater that a number of the set of two or more storage targets.

### Claim 4 (depends on 1)

The method of claim 1, wherein the consistency indicator indicates a minimum number of storage targets to be utilized in an accessing of data associated with the data access request.

### Claim 5 (depends on 1)

The method of claim 1, wherein the identifying includes at least one of: interpreting system registry information, receiving an input, initiating a query, or interpreting a query response.

### Claim 6 (depends on 1)

The method of claim 1, wherein the selecting includes at least one of: interpreting an operation log to identify a most recent revision, interpreting an error message, interpreting system registry information, or receiving an input.

### Claim 7 (depends on 1)

The method of claim 1, wherein the data access includes reading data, the processor issues read slice requests to the storage units associated with the selected threshold number of storage targets, receives read slice responses, identifies a most recent revision, and decodes slices associated with the most recent revision to reproduce the data.

### Claim 8 (depends on 7)

The method of claim 7, wherein the data access response indicates a latest revision of data and a status indicator indicating a number of storage targets accessed when reading the data.

### Claim 9 (depends on 1)

The method of claim 1, wherein the data access includes writing data, the processor issues write slice requests to storage units associated with the selected threshold number of storage targets and receives write slice responses.

### Claim 10

A processing system comprises:
a memory that stores operational instructions; and
processing circuitry configured to execute the operational instructions, wherein the operational instructions cause the processing circuitry to perform operations including:
receiving a data access request having a consistency indicator;
identifying a set of two or more storage targets associated with the data access request, wherein each storage target of the set of two or more storage targets includes at least a decode threshold number of storage units;
selecting a threshold number of storage targets of the set of two or more storage targets, based on the consistency indicator;
accessing the selected threshold number of storage targets based on the data access request;
generating a data access response, based on the accessing of the selected threshold number of storage targets;
transferring a range of encoded data slices from a first storage unit of the storage units to a second storage unit of the storage units; and
in response to the transferring the range of encoded data slices from the first storage unit to the second storage unit, transferring a corresponding range of second encoded data slices from a third storage unit of the storage units to a fourth storage unit of the storage units, wherein the second encoded data slices have a second common addressing component within addresses of the second encoded data slices, wherein the third storage unit stores a first sub-set of the second encoded data slices and the fourth storage unit stores a second sub-set of the second encoded data slices, wherein the range of second encoded data slices includes at least some of the first sub-set of the second encoded data slices, and wherein the range of second encoded data slices is identified by a second corresponding slice address range that includes a range of the addresses of the at least some of the first sub-set of the second encoded data slices.

### Claim 11 (depends on 10)

The processing system of claim 10, wherein the consistency indicator indicates the threshold number of storage targets.

### Claim 12 (depends on 10)

The processing system of claim 10 wherein, when the data access request corresponds to a write request, the threshold number of storage targets corresponds to a write storage target threshold, when the data access request corresponds to a read request, the threshold number of storage targets corresponds to a read storage target threshold, and wherein a sum of the write storage target threshold and the read storage target threshold is greater that a number of the set of two or more storage targets.

### Claim 13 (depends on 10)

The processing system of claim 10, wherein the consistency indicator indicates a minimum number of storage targets to be utilized in an accessing of data associated with the data access request.

### Claim 14 (depends on 10)

The processing system of claim 10, wherein the identifying includes at least one of: interpreting system registry information, receiving an input, initiating a query, or interpreting a query response.

### Claim 15 (depends on 10)

The processing system of claim 10, wherein the selecting includes at least one of: interpreting an operation log to identify a most recent revision, interpreting an error message, interpreting system registry information, or receiving an input.

### Claim 16 (depends on 10)

The processing system of claim 10, wherein the data access includes reading data, the processing circuitry issues read slice requests to the storage units associated with the selected threshold number of storage targets, receives read slice responses, identifies a most recent revision, and decodes slices associated with the most recent revision to reproduce the data.

### Claim 17 (depends on 16)

The processing system of claim 16, wherein the data access response indicates a latest revision of data and a status indicator indicating a number of storage targets accessed when reading the data.

### Claim 18 (depends on 10)

The processing system of claim 10, wherein the data access includes writing data, the processing circuitry issues write slice requests to storage units associated with the selected threshold number of storage targets and receives write slice responses.

### Claim 19

A tangible computer readable storage medium comprises:
at least one memory section that stores operational instructions that, when executed by a processing system that includes a processor and a memory, causes the processing system to perform operations including:
receiving a data access request having a consistency indicator;
identifying a set of two or more storage targets associated with the data access request, wherein each storage target of the set of two or more storage targets includes at least a decode threshold number of storage units;
selecting a threshold number of storage targets of the set of two or more storage targets, based on the consistency indicator;
accessing the selected threshold number of storage targets based on the data access request; and
generating a data access response, based on the accessing of the selected threshold number of storage targets;
transferring a range of encoded data slices from a first storage unit of the storage units to a second storage unit of the storage units; and
in response to the transferring the range of encoded data slices from the first storage unit to the second storage unit, transferring a corresponding range of second encoded data slices from a third storage unit of the storage units to a fourth storage unit of the storage units, wherein the second encoded data slices have a second common addressing component within addresses of the second encoded data slices, wherein the third storage unit stores a first sub-set of the second encoded data slices and the fourth storage unit stores a second sub-set of the second encoded data slices, wherein the range of second encoded data slices includes at least some of the first sub-set of the second encoded data slices, and wherein the range of second encoded data slices is identified by a second corresponding slice address range that includes a range of the addresses of the at least some of the first sub-set of the second encoded data slices.
