IP Library Granted Patent US 10,095,580
Granted Patent B2
US 10,095,580 · App. 15/352,292 · Granted Oct 9, 2018

Rebuilding data while reading data in a dispersed storage network

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,095,580
App. No.
15/352,292
Granted
Oct 9, 2018
Kind
B2
Abstract

A method includes sending, in response to read operation, read requests regarding a read threshold number of encoded data slices of a set of encoded data slices to storage units, where the read threshold number is between a decode threshold number and a total number of encoded data slices of the set of encoded data slices. The method further includes sending status inquiries regarding a remaining number of encoded data slices of the set of encoded slices to other storage units, where the remaining number equals the total number minus the read threshold number. The method further includes receiving responses from the storage units regarding the read requests and the status inquires. The method further includes determining, based on the responses, that an encoded data slice of the set of encoded data slices requires rebuilding, and rebuilding the encoded data slice while processing the read operation.

Claims (57)

1. A method for execution by one or more computing devices of a dispersed storage network (DSN), the method comprises:

sending, in response to a read operation, read requests regarding a read threshold number of encoded data slices of a set of encoded data slices to storage units of the DSN, wherein a data segment of a data object is encoded in accordance with a dispersed storage error coding function to produce the set of encoded data slices, wherein a decode threshold number of encoded data slices of the set of encoded data slices is required to rebuild the data segment, wherein the set of encoded data slices includes a total number of encoded data slices, and wherein the read threshold number is between the decode threshold number and the total number;

sending status inquiries regarding a remaining number of encoded data slices of the set of encoded slices to other storage units of the DSN, wherein the remaining number equals the total number minus the read threshold number;

receiving responses from the storage units regarding the read requests and the status inquires;

determining, based on the responses, that an encoded data slice of the set of encoded data slices requires rebuilding; and

rebuilding the encoded data slice while processing the read operation.

2. The method of claim 1 , wherein the determining that the encoded data slice requires rebuilding comprises:

interpreting one of the responses to one of the status inquires to determine a revision error of the encoded data slice.

3. The method of claim 1 , wherein the determining that the encoded data slice requires rebuilding comprises:

determining that a response to one of the status inquires was not received.

4. The method of claim 1 , wherein the determining that the encoded data slice requires rebuilding comprises:

interpreting one of the responses to one of the status inquires to determine that the encoded data slice is corrupted.

5. The method of claim 1 , wherein the determining that the encoded data slice requires rebuilding comprises:

determining that a response to one of the status inquires includes an integrity check value that does not substantially match a known integrity check value for the encoded data slice.

6. The method of claim 1 , wherein the determining that the encoded data slice requires rebuilding comprises:

interpreting one of the responses to one of read requests to determine a revision error of the encoded data slice.

7. The method of claim 1 , wherein the determining that the encoded data slice requires rebuilding comprises:

determining that a response to one of the read requests was not received.

8. The method of claim 1 , wherein the determining that the encoded data slice requires rebuilding comprises:

interpreting one of the responses to one of the read requests to determine that the encoded data slice is corrupted.

9. The method of claim 1 , wherein the determining that the encoded data slice requires rebuilding comprises:

determining that a response to one of the read requests includes an integrity check value that does not substantially match a known integrity check value for the encoded data slice.

10. The method of claim 1 , wherein the rebuilding the encoded data slice while processing the read operation comprises:

as part of the read operation, decoding the decode threshold number of encoded data slices to recover the data segment, wherein the decode threshold number of encoded data slices does not include the encoded data slice that requires rebuilding;

providing the recovered data segment to an entity associated with the read operation to finalize processing of the read operation;

dispersed storage error encoding the recovered data segment to produce a new set of encoded data slices; and

selecting one of the set of new encoded data slices as a rebuilt encoded data slice for the encoded data slice that requires rebuilding.

11. A computing device of a dispersed storage network (DSN), the computing device comprises:

an interface;

memory; and

a processing module operably coupled to the memory and the interface, wherein the processing module is operable to:

send, in response to a read operation, read requests regarding a read threshold number of encoded data slices of a set of encoded data slices to storage units of the DSN, wherein a data segment of a data object is encoded in accordance with a dispersed storage error coding function to produce the set of encoded data slices, wherein a decode threshold number of encoded data slices of the set of encoded data slices is required to rebuild the data segment, wherein the set of encoded data slices includes a total number of encoded data slices, and wherein the read threshold number is between the decode threshold number and the total number;

send status inquiries regarding a remaining number of encoded data slices of the set of encoded slices to other storage units of the DSN, wherein the remaining number equals the total number minus the read threshold number;

receive responses from the storage units regarding the read requests and the status inquires;

determine, based on the responses, that an encoded data slice of the set of encoded data slices requires rebuilding; and

rebuild the encoded data slice while processing the read operation.

12. The computing device of claim 11 , wherein the processing module is operable to determine that the encoded data slice requires rebuilding by:

interpreting one of the responses to one of the status inquires to determine a revision error of the encoded data slice.

13. The computing device of claim 11 , wherein the processing module is operable to determine that the encoded data slice requires rebuilding by:

determining that a response to one of the status inquires was not received.

14. The computing device of claim 11 , wherein the processing module is operable to determine that the encoded data slice requires rebuilding by:

interpreting one of the responses to one of the status inquires to determine that the encoded data slice is corrupted.

15. The computing device of claim 11 , wherein the processing module is operable to determine that the encoded data slice requires rebuilding by:

determining that a response to one of the status inquires includes an integrity check value that does not substantially match a known integrity check value for the encoded data slice.

16. The computing device of claim 11 , wherein the processing module is operable to determine that the encoded data slice requires rebuilding by:

interpreting one of the responses to one of read requests to determine a revision error of the encoded data slice.

17. The computing device of claim 11 , wherein the processing module is operable to determine that the encoded data slice requires rebuilding by:

determining that a response to one of the read requests was not received.

18. The computing device of claim 11 , wherein the processing module is operable to determine that the encoded data slice requires rebuilding by:

interpreting one of the responses to one of the read requests to determine that the encoded data slice is corrupted.

19. The computing device of claim 11 , wherein the processing module is operable to determine that the encoded data slice requires rebuilding by:

determining that a response to one of the read requests includes an integrity check value that does not substantially match a known integrity check value for the encoded data slice.

20. The computing device of claim 11 , wherein the processing module is operable to rebuild the encoded data slice while processing the read operation by:

as part of the read operation, decoding the decode threshold number of encoded data slices to recover the data segment, wherein the decode threshold number of encoded data slices does not include the encoded data slice that requires rebuilding;

providing the recovered data segment to an entity associated with the read operation to finalize processing of the read operation;

dispersed storage error encoding the recovered data segment to produce a new set of encoded data slices; and

selecting one of the set of new encoded data slices as a rebuilt encoded data slice for the encoded data slice that requires rebuilding.

Assignments (6)
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 30, 2017
From: TRICHARDT, BRENNAN JAMES; RESCH, JASON K.
To: CLEVERSAFE, INC.
Reel/Frame 041794/0786 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 30, 2017
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 042114/0682 →