IP Library Granted Patent US 9,501,360
Granted Patent B2
US 9,501,360 · App. 14/306,312 · Granted Nov 22, 2016

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 9,501,360
App. No.
14/306,312
Granted
Nov 22, 2016
Kind
B2
Abstract

A method begins by a dispersed storage (DS) processing sending representations of a read-rebuild inquiry request to storage units and receiving a decode threshold number of encoded data slices in response. The method continues with the DS processing module receiving a remaining number of slice status responses regarding a remaining number of encoded data slices. The method continues with the DS processing module decoding the decode threshold number of encoded data slices to reproduce a data segment and interpreting the remaining number of slice status responses to determine whether one of the remaining number of encoded data slices includes an error. When determining the error, the method continues with the DS processing module generating a rebuilt encoded data slice based on the reproduced data segment to replace the one of the remaining number of encoded data slices that includes the error.

Claims (65)

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

sending representations of a read-rebuild inquiry request to storage units of the DSN, wherein the storage units collectively store a set of encoded data slices and wherein a data segment was encoded in accordance with a dispersed storage error coding function to produce the set of encoded data slices;

receiving a decode threshold number of encoded data slices in response from at least some of the storage units, wherein the set of encoded data slices includes a total number of encoded data slices, and wherein the decode threshold number is less than the total number;

receiving a remaining number of slice status responses from one or more other storage units of the storage units regarding a remaining number of encoded data slices, wherein the remaining number is equal to or less than a difference between the total number and the decode threshold number;

decoding the decode threshold number of encoded data slices to reproduce the data segment;

interpreting the remaining number of slice status responses to determine whether one of the remaining number of encoded data slices includes an error; and

when the one of the remaining number of encoded data slices includes the error, generating a rebuilt encoded data slice based on the reproduced data segment to replace the one of the remaining number of encoded data slices that includes the error.

2. The method of claim 1 further comprises:

generating the representations of the read-rebuild inquiry request by:

generating read requests regarding a read threshold number of encoded data slices of the set of encoded data slices, wherein the read threshold number is less than the total number and equal to or greater than the decode threshold number; and

generating status check requests regarding a difference number of encoded data slices of the set of encoded data slices, wherein the difference number is equal to or less than a difference between the total number and the read threshold number.

3. The method of claim 2 further comprises:

determining whether, for one of the read requests, an encoded data slice was not received within a given time period; and

when the encoded data slice was not received in the given time period, interpreting the encoded data slice not being received within the given time period as the one of the remaining number of slices status responses indicating that the encoded data slice includes the error.

4. The method of claim 2 further comprises:

determining whether, for one of the read requests, an encoded data slice was received within a given time period and includes a revision error; and

when the encoded data slice was received in the given time period and includes the revision error, interpreting the encoded data slice as the one of the remaining number of slices status responses indicating that the encoded data slice includes the error.

5. The method of claim 2 further comprises:

determining whether, for one of the read requests, an encoded data slice was received within a given time period and includes a corruption error; and

when the encoded data slice was received in the given time period and includes the corruption error, interpreting the encoded data slice as the one of the remaining number of slices status responses indicating that the encoded data slice includes the error.

6. The method of claim 2 further comprises:

receiving at least some of the remaining number of slice status responses in response to the status check requests.

7. The method of claim 1 further comprises:

processing a data segment read request to produce the read-rebuild inquiry request.

8. The method of claim 7 further comprises:

after sending the representations of the read-rebuild inquiry request and when another data segment read request for the data segment is not received prior to expiration of a status check time out period, sending status check requests regarding the set of encoded data slices.

9. A dispersed storage (DS) module of a dispersed storage network (DSN), the DS module comprises:

a first module, when operable within a computing device, causes the computing device to:

send representations of a read-rebuild inquiry request to storage units of the DSN, wherein the storage units collectively store a set of encoded data slices and wherein a data segment was encoded in accordance with a dispersed storage error coding function to produce the set of encoded data slices;

a second module, when operable within the computing device, causes the computing device to:

receive a decode threshold number of encoded data slices in response from at least some of the storage units, wherein the set of encoded data slices includes a total number of encoded data slices, and wherein the decode threshold number is less than the total number;

a third module, when operable within the computing device, causes the computing device to:

receive a remaining number of slice status responses from one or more other storage units of the storage units regarding a remaining number of encoded data slices, wherein the remaining number is equal to or less than a difference between the total number and the decode threshold number;

a fourth module, when operable within the computing device, causes the computing device to:

decode the decode threshold number of encoded data slices to reproduce the data segment;

a fifth module, when operable within the computing device, causes the computing device to:

interpret the remaining number of slice status responses to determine whether one of the remaining number of encoded data slices includes an error; and

a sixth module, when operable within the computing device, causes the computing device to:

when the one of the remaining number of encoded data slices includes the error, generate a rebuilt encoded data slice based on the reproduced data segment to replace the one of the remaining number of encoded data slices that includes the error.

10. The DS module of claim 9 further comprises:

the first module, when operable within the computing device, further causes the computing device to:

generate the representations of the read-rebuild inquiry request by:

generating read requests regarding a read threshold number of encoded data slices of the set of encoded data slices, wherein the read threshold number is less than the total number and equal to or greater than the decode threshold number; and

generating status check requests regarding a difference number of encoded data slices of the set of encoded data slices, wherein the difference number is equal to or less than a difference between the total number and the read threshold number.

11. The DS module of claim 10 further comprises:

the fifth module, when operable within the computing device, further causes the computing device to:

determine whether, for one of the read requests, an encoded data slice was not received within a given time period; and

when the encoded data slice was not received in the given time period, interpret the encoded data slice not being received within the given time period as the one of the remaining number of slices status responses indicating that the encoded data slice includes the error.

12. The DS module of claim 10 further comprises:

the fifth module, when operable within the computing device, further causes the computing device to:

determine whether, for one of the read requests, an encoded data slice was received within a given time period and includes a revision error; and

when the encoded data slice was received in the given time period and includes the revision error, interpret the encoded data slice as the one of the remaining number of slices status responses indicating that the encoded data slice includes the error.

13. The DS module of claim 10 further comprises:

the fifth module, when operable within the computing device, further causes the computing device to:

determine whether, for one of the read requests, an encoded data slice was received within a given time period and includes a corruption error; and

when the encoded data slice was received in the given time period and includes the corruption error, interpret the encoded data slice as the one of the remaining number of slices status responses indicating that the encoded data slice includes the error.

14. The DS module of claim 10 further comprises:

the third module, when operable within the computing device, further causes the computing device to:

receive at least some of the remaining number of slice status responses in response to the status check requests.

15. The DS module of claim 9 further comprises:

the first module, when operable within the computing device, further causes the computing device to:

process a data segment read request to produce the read-rebuild inquiry request.

16. The DS module of claim 15 further comprises:

the first module, when operable within the computing device, further causes the computing device to:

after sending the representations of the read-rebuild inquiry request and when another data segment read request for the data segment is not received prior to expiration of a status check time out period, send status check requests regarding the set of encoded data slices.

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 May 6, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038629/0015 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 30, 2014
From: TRICHARDT, BRENNAN JAMES; RESCH, JASON K.
To: CLEVERSAFE, INC.
Reel/Frame 033208/0476 →