IP Library Granted Patent US 10,594,793
Granted Patent B2
US 10,594,793 · App. 15/841,936 · Granted Mar 17, 2020

Read-prepare requests to multiple memories

Inventor: Jason K. Resch (Chicago, IL)
Assignee: PURE STORAGE, INC.
H04L67/1097G06F11/1076H04L67/10H03M13/09H03M13/1515H03M13/3761
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,594,793
App. No.
15/841,936
Granted
Mar 17, 2020
Kind
B2
Abstract

A distributed storage network (DSN) employs multiple storage units, each of which includes distributed storage (DS) memories for dispersed storage of encoded data slices. A requesting device transmits a read-prepare request specifying a slice name to the storage units, and instructs the storage units to attempt to retrieve, one or more data slices associated with the slice name from dispersed storage, and to temporarily store the one or more data slices in a memory, rather than transmitting them to the requesting device. The requesting device receives read-prepare responses from the storage units. The read-prepare responses include either an error indication indicating that the storage unit was unable to retrieve one or more valid data slices from dispersed storage, or names and revisions of valid data slices actually retrieved. The requesting device selects a subset of the storage units based on the read-prepare responses, and transmits a read-complete request to them.

Claims (65)

1. A method for use in a distributed storage network (DSN) employing a plurality of storage units, the plurality of storage units including a plurality distributed storage (DS) memories for dispersed storage of encoded data slices, the method comprising:

transmitting, from a requesting device to the plurality of storage units, a read-prepare request, the read-prepare request initiating a first phase of a multi-phase read operation, and specifying a slice name of an encoded data slice, and instructing the plurality of storage units to:

attempt to retrieve, from dispersed storage, one or more data slices associated with the slice name;

temporarily store the one or more data slices in a memory, rather than transmitting the one or more data slices to the requesting device;

receiving from the plurality of storage units, at the requesting device, read-prepare responses, the read-prepare responses including either an error indication indicating that the storage unit was unable to retrieve one or more valid data slices from dispersed storage, or names and revisions of the one or more valid data slices actually retrieved from dispersed storage;

selecting, at the requesting device, a subset of the plurality of storage units based on the read-prepare responses;

transmitting, from the requesting device to the subset of the plurality of storage units, a read-complete request the read-complete request initiating a second phase of the multi-phase read operation, and instructing the subset of the plurality of storage units to return the one or more data slices temporarily stored in the memory to the requesting device.

2. The method of claim 1 , further comprising:

transmitting, from the requesting device to other storage units not selected for inclusion in the subset of the plurality of storage units, a read-abandon request, the read-abandon request instructing the other storage units to free the one or more data slices temporarily stored.

3. The method of claim 1 , further comprising:

receiving, from the plurality of storage units, at the requesting device, at least a subset of the one or more valid data slices actually retrieved from dispersed storage.

4. The method of claim 1 , further comprising:

recovering a data segment from the at least a subset of the one or more valid data slices.

5. The method of claim 1 , further comprising:

generating the read-complete request to include:

information identifying a specific revision of the slice name specified in the read-prepare request; and

information indicating that the subset of the plurality of storage units are to return particular data slices matching the specific revision.

6. The method of claim 5 , further comprising:

selecting the specific revision based, at least in part, on information included in the read-prepare responses indicating that a desired number of encoded data slices are available from the subset of the plurality of storage units.

7. The method of claim 6 , further comprising:

selecting the subset of the plurality of storage units based, at least in part, on information included in the read-prepare responses indicating which storage units retrieved valid data slices matching the information identifying a specific revision.

8. A processing unit for use in a distributed storage network (DSN) employing a plurality of storage units, the plurality of storage units including a plurality distributed storage (DS) memories for dispersed storage of encoded data slices, the processing unit comprising:

a processor and associated memory;

a network interface coupled to the processor and associated memory;

the processor and associated memory configured to transmit to the plurality of storage units, via the network interface, a read-prepare request, the read-prepare request initiating a first phase of a multi-phase read operation, and specifying a slice name of an encoded data slice, and instructing the plurality of storage units to:

attempt to retrieve, from dispersed storage, one or more data slices associated with the slice name;

temporarily store the one or more data slices in a memory, rather than transmitting the one or more data slices to the processing unit;

the processor and associated memory further configured to receive from the plurality of storage units, via the network interface, read-prepare responses, the read-prepare responses including either an error indication indicating that the storage unit was unable to retrieve one or more valid data slices from dispersed storage, or names and revisions of the one or more valid data slices actually retrieved from dispersed storage;

the processor and associated memory further configured to select a subset of the plurality of storage units based on the read-prepare responses;

the processor and associated memory further configured to transmit, to the subset of the plurality of storage units, a read-complete request, the read-complete request initiating a second phase of the multi-phase read operation, and instructing the subset of the plurality of storage units to return the one or more data slices temporarily stored in the memory to the processing unit.

9. The processing unit of claim 8 , the processor and associated memory further configured to:

transmit, to other storage units not selected for inclusion in the subset of the plurality of storage units, a read-abandon request, the read-abandon request instructing the other storage units to free the one or more data slices temporarily stored.

10. The processing unit of claim 8 , the processor and associated memory further configured to:

receive, from the plurality of storage units, at least a subset of the one or more valid data slices actually retrieved from dispersed storage.

11. The processing unit of claim 8 , the processor and associated memory further configured to:

recover a data segment from the at least a subset of the one or more valid data slices.

12. The processing unit of claim 8 , the processor and associated memory further configured to:

generate the read-complete request to include:

information identifying a specific revision of the slice name specified in the read-prepare request; and

information indicating that the subset of the plurality of storage units are to return particular data slices matching the specific revision.

13. The processing unit of claim 12 , the processor and associated memory further configured to:

select the specific revision based, at least in part, on information included in the read-prepare responses indicating that a desired number of encoded data slices are available from the subset of the plurality of storage units.

14. The processing unit of claim 13 , the processor and associated memory further configured to:

select the subset of the plurality of storage units based, at least in part, on information included in the read-prepare responses indicating which storage units retrieved valid data slices matching the information identifying a specific revision.

15. A distributed storage network (DSN), comprising:

a plurality of storage units, the plurality of storage units including a plurality distributed storage (DS) memories for dispersed storage of encoded data slices;

a processing unit including a processor, a memory, and a network interface, the processing unit configured to:

transmit, to the plurality of storage units, a read-prepare request, the read-prepare request initiating a first phase of a multi-phase read operation, and specifying a slice name of an encoded data slice, and instructing the plurality of storage units to:

attempt to retrieve, from dispersed storage, one or more data slices associated with the slice name;

temporarily store the one or more data slices in a memory, rather than transmitting the one or more data slices to the processing unit;

receive, from the plurality of storage units, via the network interface, read-prepare responses, the read-prepare responses including either an error indication indicating that the storage unit was unable to retrieve one or more valid data slices from dispersed storage, or names and revisions of the one or more valid data slices actually retrieved from dispersed storage;

select a subset of the plurality of storage units based on the read-prepare responses;

transmit, to the subset of the plurality of storage units, a read-complete request, the read-complete request initiating a second phase of the multi-phase read operation, and instructing the subset of the plurality of storage units to return the one or more data slices temporarily stored in the memory to the processing unit.

16. The distributed storage network (DSN) of claim 15 , the processing unit further configured to:

transmit, to other storage units not selected for inclusion in the subset of the plurality of storage units, a read-abandon request, the read-abandon request instructing the other storage units to free the one or more data slices temporarily stored.

17. The distributed storage network (DSN) of claim 15 , the processing unit further configured to:

receive, from the plurality of storage units, at least a subset of the one or more valid data slices actually retrieved from dispersed storage.

18. The distributed storage network (DSN) of claim 15 , the processing unit further configured to:

recover a data segment from the at least a subset of the one or more valid data slices.

19. The distributed storage network (DSN) of claim 15 , the processing unit further configured to:

generate the read-complete request to include:

information identifying a specific revision of the slice name specified in the read-prepare request; and

information indicating that the subset of the plurality of storage units are to return particular data slices matching the specific revision.

20. The distributed storage network (DSN) of claim 19 , the processing unit further configured to:

select the specific revision based, at least in part, on information included in the read-prepare responses indicating that a desired number of encoded data slices are available from the subset of the plurality of storage units.

Assignments (5)
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS Recorded Jun 11, 2025
From: BARCLAYS BANK PLC, AS ADMINISTRATIVE AGENT
To: PURE STORAGE, INC.
Reel/Frame 071558/0523 →
SECURITY INTEREST Recorded Aug 26, 2020
From: PURE STORAGE, INC.
To: BARCLAYS BANK PLC AS ADMINISTRATIVE AGENT
Reel/Frame 053867/0581 →
CORRECTIVE ASSIGNMENT TO CORRECT THE DELETE 15/174/279 AND 15/174/596 PROPERTY NUMBERS PREVIOUSLY RECORDED AT REEL: 49555 FRAME: 530. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 7, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 051495/0831 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049555/0530 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 15, 2017
From: RESCH, JASON K.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 044407/0849 →
Continuity (4)
Continuation In Part 15812706 · Nov 14, 2017
Continuation 14956818 · Dec 2, 2015
Provisional Application 62109712 · Jan 30, 2015
Related Publication 20180109615A1 · Apr 19, 2018