IP Library Granted Patent US 10,168,904
Granted Patent B2
US 10,168,904 · App. 15/457,408 · Granted Jan 1, 2019

Quasi-error notifications in a dispersed storage network

Inventors: Niall J. McShane (Arlington Heights, IL); Jason K. Resch (Chicago, IL)
Assignee: INTERNATIONAL BUSINESS MACHINES CORPORATION
G06F3/0604G06F3/064G06F3/067G06F3/0619G06F3/0644G06F3/0659G06F11/1076G06F11/1092G06F2211/1028H03M13/1515H03M13/616
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,168,904
App. No.
15/457,408
Granted
Jan 1, 2019
Kind
B2
Abstract

Methods for use in a dispersed storage network (DSN) to retrieve encoded data from memory device of an impaired storage unit. In various examples, a computing device of the DSN issues requests to a plurality of storage units, including the impaired storage unit, to recover at least a decode threshold number of encoded data slices of a set of encoded data slices. When the impaired storage unit determines that it is not able to quickly retrieve the requested data slice for provision to the computing device, the impaired storage unit promptly issues a quasi-error response instead. When the computing device receives less than the decode threshold number of encoded data slices and a quasi-error response, it may elect to issue another slice request(s) to another storage unit(s) and/or issue a continue request instructing the impaired storage unit to continue processing the request to recover the data slice stored therein.

Claims (68)

1. A method for execution by one or more processing modules of one or more computing devices of a dispersed storage network (DSN), the DSN including a set of storage units storing encoded data, the method comprises:

issuing slice requests to a plurality of storage units of the set of storage units for at least a decode threshold number of encoded data slices of a set of encoded data slices, wherein segments of a data object are dispersed storage error encoded to produce a plurality of sets of encoded data slices including the set of encoded data slices, and wherein a decode threshold number of encoded data slices of the set of encoded data slices is required to recover a corresponding data segment;

receiving a plurality of responses from the plurality of storage units, wherein the plurality of responses include less than the decode threshold number of encoded data slices and at least one quasi-error response from an impaired storage unit;

based on the at least one quasi-error response, determining to issue at least one of:

a continue request to the impaired storage unit, the continue request requesting continued processing of a slice request received by the impaired storage unit and corresponding to the quasi-error response; or

an additional slice request to an additional storage unit of the set of storage units, the additional slice request requesting an additional encoded data slice of the set of encoded data slices; and

issuing the continue request to the impaired storage unit or the additional slice request to the additional storage unit.

2. The method of claim 1 further comprises:

receiving the decode threshold number of encoded data slices in response to the continue request or the additional slice request; and

dispersed storage error decoding the decode threshold number of encoded data slices to recover the corresponding data segment.

3. The method of claim 1 , wherein determining to issue at least one of a continue request or an additional slice request is based on at least one of:

a number of quasi-error responses received from the plurality of storage units of the set of storage units; or

a number of additional storage units of the set of storage units to which a slice request was not issued.

4. The method of claim 1 , wherein determining to issue at least one of a continue request or an additional slice request is based on at least one of:

determining that a calculated probability of receiving an encoded data slice from the impaired storage unit is below a threshold level; or

determining that a calculated probability of receiving an encoded data slice from the additional storage unit is greater than a calculated probability of receiving an encoded data slice from the impaired storage unit.

5. The method of claim 1 , wherein determining to issue at least one of a continue request or an additional slice request is based on at least one of:

an estimated time to retrieve an encoded data slice from the additional storage unit; or

a timing requirement.

6. The method of claim 1 , wherein the continue request, when issued, includes a status code and a slice name of an encoded data slice.

7. The method of claim 1 , wherein issuing slice requests to the plurality of storage units of the set of storage units includes:

receiving a retrieve data request associated with the data object; and

selecting the plurality of storage units based on the retrieve data request.

8. The method of claim 1 , wherein determining to issue at least one of a continue request or an additional slice request includes determining to issue both the continue request and the additional slice request.

9. A computing device of a group of computing devices of a dispersed storage network (DSN), the DSN including a set of storage units storing encoded data, the computing device comprises:

a network interface;

a local memory; and

a processing module operably coupled to the network interface and the local memory, wherein the processing module is configured to:

issue, via the network interface, slice requests to a plurality of storage units of the set of storage units for at least a decode threshold number of encoded data slices of a set of encoded data slices, wherein segments of a data object are dispersed storage error encoded to produce a plurality of sets of encoded data slices including the set of encoded data slices, and wherein a decode threshold number of encoded data slices of the set of encoded data slices is required to recover a corresponding data segment;

receive, via the network interface, a plurality of responses from the plurality of storage units, wherein the plurality of responses include less than the decode threshold number of encoded data slices and at least one quasi-error response from an impaired storage unit;

based on the at least one quasi-error response, determine to issue an additional slice request to an additional storage unit of the set of storage units, the additional slice request requesting an additional encoded data slice of the set of encoded data slices; and

issue, via the network interface, the additional slice request to the additional storage unit.

10. The computing device of claim 9 , wherein the processing module is further configured to:

receive, via the network interface, the decode threshold number of encoded data slices in response to the additional slice request; and

dispersed storage error decode the decode threshold number of encoded data slices to recover the corresponding data segment.

11. The computing device of claim 10 , wherein the processing module is further configured to:

issue, via the network interface, a cancel request to the impaired storage unit, the cancel request requesting discontinued processing of a slice request received by the impaired storage unit.

12. The computing device of claim 9 , wherein determining to issue an additional slice request is based on at least one of:

a number of quasi-error responses received from the plurality of storage units of the set of storage units; or

a number of additional storage units of the set of storage units to which a slice request was not issued.

13. The computing device of claim 9 , wherein determining to issue an additional slice request is based on at least one of:

determining that a calculated probability of receiving an encoded data slice from the impaired storage unit is below a threshold level; or

determining that a calculated probability of receiving an encoded data slice from the additional storage unit is greater than a calculated probability of receiving an encoded data slice from the impaired storage unit.

14. The computing device of claim 9 , wherein determining to issue an additional slice request is based on at least one of:

an estimated time to retrieve an encoded data slice from the additional storage unit; or

a timing requirement.

15. The computing device of claim 9 , wherein issuing slice requests to the plurality of storage units of the set of storage units includes:

receiving, via the network interface, a retrieve data request associated with the data object; and

selecting the plurality of storage units based on the retrieve data request.

16. The computing device of claim 9 , wherein determining to issue an additional slice request further includes:

determining to issue, via the network interface, a continue request to the impaired storage unit, the continue request requesting continued processing of a slice request received by the impaired storage unit and corresponding to the quasi-error response.

17. A storage unit of a set of storage units of a dispersed storage network (DSN), the DSN including a computing device, storage unit comprises:

a network interface;

a memory device, the memory device storing an encoded data slice of a set of encoded data slices, wherein segments of a data object are dispersed storage error encoded to produce a plurality of sets of encoded data slices including the set of encoded data slices; and

a processing module operably coupled to the network interface and the memory device, wherein the processing module is configured to:

receive, via the network interface, a slice request from the computing device for the encoded data slice;

process the slice request to determine whether the encoded data slice is immediately available to send to the computing device; and

in response to determining that the encoded data slice is immediately available, retrieve the encoded data slice from the memory device and send, via the network interface, the encoded data slice to the computing device, and

in response to determining that the encoded data slice is not immediately available, send, via the network interface, a quasi-error response to the computing device.

18. The storage unit of claim 17 , the processing module further configured to:

receive, via the network interface, a continue request in reply to the quasi-error response; and

in response to the continue request, continue processing of the slice request.

19. The storage unit of claim 18 , the processing module further configured to:

receive, via the network interface, a cancel request in reply to the quasi-error response; and

in response to the cancel request, discontinue processing of the slice request.

20. The storage unit of claim 18 , wherein continued processing of the slice request includes:

determining that the encoded data slice is unavailable from the memory device; and

sending, via the network interface, an error response to the computing device.

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 9992063 AND 10334045 LISTED IN ERROR PREVIOUSLY RECORDED ON REEL 049556 FRAME 0012. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNOR HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 14, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 052205/0705 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049556/0012 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 13, 2017
From: MCSHANE, NIALL J.; RESCH, JASON K.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 041561/0315 →
Continuity (3)
Continuation In Part 15058408 · Mar 2, 2016
Provisional Application 62154886 · Apr 30, 2015
Related Publication 20170185303A1 · Jun 29, 2017