IP Library Granted Patent US 9,298,542
Granted Patent B2
US 9,298,542 · App. 14/027,823 · Granted Mar 29, 2016

Recovering data from corrupted encoded data slices

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,298,542
App. No.
14/027,823
Granted
Mar 29, 2016
Kind
B2
Abstract

A method begins by a dispersed storage (DS) processing module receiving a set of encoded data slices, where some of the encoded data slices have an integrity issue such that less than a decode threshold number of encoded data slices have valid integrity. The method continues with the DS processing module creating partial coded matrices from the set of encoded data slices and generating partial decoding matrices. The method continues with the DS processing module generating a test data matrix based on the partial coded matrices and the partial decoding matrices, encoding the test data matrix into a set of test encoded data slices, and generating integrity information for the set of test encoded data slices. When the integrity information is valid, the method continues with the DS processing module utilizing the test data matrix as a data matrix and converting the data matrix into a recovered data segment.

Claims (75)

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:

receiving a set of encoded data slices, wherein some encoded data slices of the set of encoded data slices have an integrity issue such that less than a decode threshold number of encoded data slices have valid integrity;

creating a received coded matrix from the set of encoded data slices;

creating a plurality of partial coded matrices from the received coded matrix, wherein each of the plurality of partial coded matrices includes at least one encoded data block from at least one of the some of the encoded data slices having the integrity issue;

generating a plurality of partial decoding matrices from a decoding matrix;

generating a test data matrix based on the plurality of partial coded matrices and the plurality of partial decoding matrices;

encoding the test data matrix into a set of test encoded data slices;

generating integrity information for the set of test encoded data slices;

when the integrity information is valid, utilizing the test data matrix as a data matrix; and

converting the data matrix into a recovered data segment.

2. The method of claim 1 , wherein the creating the received coded matrix comprises:

separating each encoded data slice of the set of encoded data slices into encoded data blocks; and

arranging the encoded data blocks of the set of encoded data slices into the received coded matrix in accordance with a dispersed storage error encoding function.

3. The method of claim 1 further comprises:

the creating the plurality of partial coded matrices including:

creating a first partial coded matrix of the plurality of partial coded matrices from a first group of encoded data blocks of the received coded matrix; and

creating a second partial coded matrix of the plurality of partial coded matrices from a second group of encoded data blocks of the received coded matrix; and

the generating the plurality of partial decoding matrices including:

generating a first partial decoding matrix from a first group of matrix coefficients of the decoding matrix, wherein the first group of matrix coefficients have a correlation to the first group of encoded data blocks; and

generating a second partial decoding matrix from a second group of matrix coefficients of the decoding matrix, wherein the second group of matrix coefficients have a correlation to the second group of encoded data blocks.

4. The method of claim 1 , wherein the generating the test data matrix comprises:

matrix multiplying a first partial coded matrix of the plurality of partial coded matrices with a first partial decoding matrix of the plurality of partial decoding matrices to produce a first partial test data matrix;

matrix multiplying a second partial coded matrix of the plurality of partial coded matrices with a second partial decoding matrix of the plurality of partial decoding matrices to produce a second partial test data matrix; and

combining the first and second partial test data matrices to produce the test data matrix.

5. The method of claim 1 further comprises:

generating an integrity value for each test encoded data slice of the set of test encoded data slices to produce integrity values as the integrity information;

retrieving a valid integrity value for each encoded data slice of the set of encoded data slices to produce valid integrity values; and

comparing the integrity values with the valid integrity values to determine whether the integrity information is valid.

6. The method of claim 1 further comprises:

when the integrity information is not valid:

creating a second plurality of partial coded matrices from the received coded matrix, wherein each of the second plurality of partial coded matrices includes at least one different encoded data block from the at least one of the some of the encoded data slices having the integrity issue;

generating a second plurality of partial decoding matrices from the decoding matrix;

generating a second test data matrix based on the second plurality of partial coded matrices and the second plurality of partial decoding matrices;

encoding the second test data matrix into a second set of test encoded data slices;

generating second integrity information for the second set of test encoded data slices; and

when the second integrity information is valid, utilizing the second test data matrix as the data matrix.

7. A dispersed storage (DS) module comprises:

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

receive a set of encoded data slices, wherein some encoded data slices of the set of encoded data slices have an integrity issue such that less than a decode threshold number of encoded data slices have valid integrity; and

create a received coded matrix from the set of encoded data slices;

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

create a plurality of partial coded matrices from the received coded matrix, wherein each of the plurality of partial coded matrices includes at least one encoded data block from at least one of the some of the encoded data slices having the integrity issue;

generate a plurality of partial decoding matrices from a decoding matrix;

generate a test data matrix based on the plurality of partial coded matrices and the plurality of partial decoding matrices;

encode the test data matrix into a set of test encoded data slices;

generate integrity information for the set of test encoded data slices;

when the integrity information is valid, utilize the test data matrix as a data matrix; and

convert the data matrix into a recovered data segment.

8. The DS module of claim 7 , wherein the receiving module functions to create the received coded matrix by:

separating each encoded data slice of the set of encoded data slices into encoded data blocks; and

arranging the encoded data blocks of the set of encoded data slices into the received coded matrix in accordance with a dispersed storage error encoding function.

9. The DS module of claim 7 further comprises:

the consensus decoding module functions to create the plurality of partial coded matrices by:

creating a first partial coded matrix of the plurality of partial coded matrices from a first group of encoded data blocks of the received coded matrix; and

creating a second partial coded matrix of the plurality of partial coded matrices from a second group of encoded data blocks of the received coded matrix; and

the consensus decoding module functions to generate the plurality of partial decoding matrices by:

generating a first partial decoding matrix from a first group of matrix coefficients of the decoding matrix, wherein the first group of matrix coefficients have a correlation to the first group of encoded data blocks; and

generating a second partial decoding matrix from a second group of matrix coefficients of the decoding matrix, wherein the second group of matrix coefficients have a correlation to the second group of encoded data blocks.

10. The DS module of claim 7 , wherein the consensus decoding module functions to generate the test data matrix by:

matrix multiplying a first partial coded matrix of the plurality of partial coded matrices with a first partial decoding matrix of the plurality of partial decoding matrices to produce a first partial test data matrix;

matrix multiplying a second partial coded matrix of the plurality of partial coded matrices with a second partial decoding matrix of the plurality of partial decoding matrices to produce a second partial test data matrix; and

combining the first and second partial test data matrices to produce the test data matrix.

11. The DS module of claim 7 further comprises:

the consensus decoding module, when operable within the computing device, further functions to cause the computing device to:

generate an integrity value for each test encoded data slice of the set of test encoded data slices to produce integrity values as the integrity information;

retrieve a valid integrity value for each encoded data slice of the set of encoded data slices to produce valid integrity values; and

compare the integrity values with the valid integrity values to determine whether the integrity information is valid.

12. The DS module of claim 7 further comprises:

when the integrity information is not valid, the consensus decoding module, when operable within the computing device, further functions to cause the computing device to:

create a second plurality of partial coded matrices from the received coded matrix, wherein each of the second plurality of partial coded matrices includes at least one different encoded data block from the at least one of the some of the encoded data slices having the integrity issue;

generate a second plurality of partial decoding matrices from the decoding matrix;

generate a second test data matrix based on the second plurality of partial coded matrices and the second plurality of partial decoding matrices;

encode the second test data matrix into a second set of test encoded data slices;

generate second integrity information for the second set of test encoded data slices; and

when the second integrity information is valid, utilize the second test data matrix as the data matrix.

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 16, 2013
From: PEAKE, ANDREW GEORGE; RESCH, JASON K.
To: CLEVERSAFE, INC.
Reel/Frame 031213/0403 →