IP Library Granted Patent US 9,116,831
Granted Patent B2
US 9,116,831 · App. 13/231,332 · Granted Aug 25, 2015

Correcting an errant encoded data slice

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,116,831
App. No.
13/231,332
Granted
Aug 25, 2015
Kind
B2
Abstract

A method begins by a processing module decoding a set of encoded data slices to produce a decoded data segment and determining whether the decoded data segment includes an error. When the decoded data segments includes the error, the processing module identifies one or more errant encoded data slices by decoding another set of encoded data slices to produce another decoded data segment. The method continues with the processing module determining whether the other decoded data segment includes the error. When the other decoded data segment does not include the error, the processing module identifies the one or more errant encoded data slices and corrects the one or more errant encoded data slices. When the other decoded data segment includes the error, the processing module repeats, for yet another set of encoded data slices, the decoding step, the determining step, and the identifying and correcting step or the repeating steps.

Claims (49)

1. A method for execution by a computing device, the method comprises:

retrieving a set of encoded data slices from distributed storage network memory, wherein a data segment was encoded in accordance with a dispersed storage error coding function to produce the set of encoded data slices, and wherein at least a decode threshold number of encoded data slices of the set of encoded data slices is needed to decode and recover the data segment;

decoding, using the dispersed storage error coding function, a first subset of the set of encoded data slices to produce a decoded data segment, wherein the first subset of the set of encoded data slices includes a decode threshold number of a first combination of encoded data slices of the set of encoded data slices;

determining whether the decoded data segment includes an error based on an integrity value of the decoded data segment; and

when the decoded data segment includes the error, identifying one or more errant encoded data slices of the at least a decode threshold number of encoded data slices having a bit error by:

decoding, using the dispersed storage error coding function, a second subset of the set of encoded data slices to produce another decoded data segment, wherein the second subset of the set of encoded data slices includes the decode threshold number of a second combination of encoded data slices of the set of encoded data slices;

determining whether the other decoded data segment includes the error based on an integrity value of the other decoded data segment;

when the other decoded data segment does not include the error:

identifying the one or more errant encoded data slices based on a difference between the first subset of the set of encoded data slices and the second subset of the set of encoded data slices; and

correcting the one or more errant encoded data slices; and

when the other decoded data segment includes the error, repeating, for a third subset of the set of encoded data slices having the decode threshold number of a third combination of encoded data slices of the set of encoded data slices, the decoding step, the determining step, and the identifying and correcting steps or the repeating step.

2. The method of claim 1 , wherein the determining whether the decoded data segment or the other decoded data segment includes the error comprises at least one of:

comparing an integrity value of the decoded data segment or the other decoded data segment with a stored integrity value;

when the integrity value compares favorably to the stored integrity value, indicating that the decoded data segment or the other decoded data segment does not include the error; and

when the integrity value compares unfavorably to the stored integrity value, indicating that the decoded data segment or the other decoded data segment includes the error.

3. The method of claim 1 , wherein the decoding the second subset of encoded data slices of the set of encoded data slices comprises:

selecting the second combination of encoded data slices based on a preceding the first combination of encoded data slices and an incremental difference function.

4. The method of claim 1 , wherein the correcting the one or more errant encoded data slices comprises:

dispersed storage error encoding the other decoded data segment that does not include the error to produce a plurality of encoded data slices;

selecting corresponding ones of the plurality of encoded data slices to replace the one or more errant encoded data slices to produce one or more selected encoded data slices; and

facilitating overwriting, in a dispersed storage network, the one or more errant encoded data slices with the one or more selected encoded data slices.

5. The method of claim 1 , wherein the identifying the one or more errant encoded data slices comprises:

identifying an encoded data slice that was included in the first subset of encoded data slices and was excluded from the second subset of encoded data slices to produce an identified errant encoded data slice.

6. A computer comprises:

an interface;

a memory; and

a processing module operable to:

receive, via the interface, a set of encoded data slices from distributed storage network memory, wherein a data segment was encoded in accordance with a dispersed storage error coding function to produce the set of encoded data slices, and wherein at least a decode threshold number of encoded data slices of the set of encoded data slices is needed to decode and recover the data segment;

decode, using the dispersed storage error coding function, a first subset of the set of encoded data slices to produce a decoded data segment, wherein the first subset of the set of encoded data slices includes a decode threshold number of a first combination of encoded data slices of the set of encoded data slices;

determine whether the decoded data segment includes an error based on an integrity value of the decoded data segment; and

when the decoded data segment includes the error, identify one or more errant encoded data slices of the at least a decode threshold number of encoded data slices having a bit error by:

decoding, using the dispersed storage error coding function, a second subset of the set of encoded data slices to produce another decoded data segment, wherein the second subset of the set of encoded data slices includes the decode threshold number of a second combination of encoded data slices of the set of encoded data slices;

determining whether the other decoded data segment includes the error based on an integrity value of the other decoded data segment;

when the other decoded data segment does not include the error:

identifying the one or more errant encoded data slices based on a difference between the first subset of the set of encoded data slices and the second subset of the set of encoded data slices; and

correcting the one or more errant encoded data slices; and

when the other decoded data segment includes the error, repeating, for a third subset of the set of encoded data slices having the decode threshold number of a third combination of encoded data slices of the set of encoded data slices, the decoding step, the determining step, and the identifying and correcting steps or the repeating step.

7. The computer of claim 6 , wherein the processing module functions to determine whether the decoded data segment or the other decoded data segment includes the error by at least one of:

comparing an integrity value of the decoded data segment or the other decoded data segment with a stored integrity value;

when the integrity value compares favorably to the stored integrity value, indicating that the decoded data segment or the other decoded data segment does not include the error; and

when the integrity value compares unfavorably to the stored integrity value, indicating that the decoded data segment or the other decoded data segment includes the error.

8. The computer of claim 6 , wherein the processing module functions to decode the second subset of encoded data slices of the set of encoded data slices by:

selecting the second combination of encoded data slices based on a preceding the first combination of encoded data slices and an incremental difference function.

9. The computer of claim 6 , wherein the processing module functions to correct the one or more errant encoded data slices by:

dispersed storage error encoding the other decoded data segment that does not include the error to produce a plurality of encoded data slices;

selecting corresponding ones of the plurality of encoded data slices to replace the one or more errant encoded data slices to produce one or more selected encoded data slices; and

facilitating overwriting, via the interface, in a dispersed storage network, the one or more errant encoded data slices with the one or more selected encoded data slices.

10. The computer of claim 6 , wherein the processing module functions to identify the one or more errant encoded data slices by:

identifying an encoded data slice that was included in the first subset of encoded data slices and was excluded from the second subset of encoded data slices to produce an identified errant encoded data slice.

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 13, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038687/0596 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 13, 2011
From: DHUSE, GREG; RESCH, JASON K.
To: CLEVERSAFE, INC.
Reel/Frame 026896/0621 →