IP Library Granted Patent US 8,949,688
Granted Patent B2
US 8,949,688 · App. 13/413,320 · Granted Feb 3, 2015

Updating error recovery information 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 8,949,688
App. No.
13/413,320
Granted
Feb 3, 2015
Kind
B2
Abstract

A method begins by a dispersed storage (DS) processing module updating an encoded data slice of a set of encoded data slices to produce an updated encoded data slice and sending the updated encoded data slice to a first DS unit of a set of DS units. The method continues with the first DS unit storing the updated encoded data slice and generating partial error recovery information to produce a collection of partial error recovery information. The method continues with the first DS unit outputting the collection of partial error recovery information for storage in at least some of the set of DS units. The method continues with one of the at least some of the set of DS units updating error recovery information of an encoded data slice based on a corresponding one of the collection of partial error recovery information.

Claims (72)

1. A method comprises:

updating, by a dispersed storage (DS) processing module, an encoded data slice of a set of encoded data slices to produce an updated encoded data slice, wherein data is encoded in accordance with a dispersed storage error coding function to produce the set of encoded data slices and wherein at least some of the encoded data slices of the set of encoded data slices include error recovery information;

sending, by the DS processing module, the updated encoded data slice to a first DS unit of a set of DS units;

storing, by the first DS unit, the updated encoded data slice;

for each one of the at least some of the encoded data slices that include the error recovery information, generating, by the first DS unit, partial error recovery information based on one or more of: the encoded data slice, the updated encoded data slice, update information, and the dispersed storage error coding function to produce a collection of partial error recovery information;

outputting, by the first DS unit, the collection of partial error recovery information for storage in at least some of the set of DS units, which store the at least some of the encoded data slices that include error recovery information; and

updating, by one of the at least some of the set of DS units, the error recovery information of an encoded data slice of the at least some of the encoded data slices that includes the error recovery information based on a corresponding one of the collection of partial error recovery information to produce an encoded data slice that includes updated error recovery information.

2. The method of claim 1 further comprises:

generating, by the DS processing module, the update information to include one or more of: a slice name, a revision number of the updated encoded data slice, a generator matrix, an encoding matrix, a pillar number of the updated encoded data slice; and

sending, by the DS processing module, the update information to the first DS unit.

3. The method of claim 1 , wherein the generating, by the first DS unit, one of the collection of partial error recovery information comprises:

generating a first term of a corresponding one of the at least some of the encoded data slices that includes the error recovery information based on the updated encoded data slice in accordance with the dispersed storage error coding function;

generating a second term of the corresponding one of the at least some of the encoded data slices that includes the error recovery information based on the encoded data slice in accordance with the dispersed storage error coding function; and

performing a mathematical function on the first and second terms to produce the one of the collection of partial error recovery information.

4. The method of claim 3 , wherein the generating the first term comprises:

obtaining an encoding matrix of the dispersed storage error coding function;

reducing the encoding matrix to produce a square matrix that excludes one or more rows including a row associated with the corresponding one of the at least some of the encoded data slices that includes the error recovery information;

inverting the square matrix to produce an inverted matrix;

matrix multiplying the inverted matrix by the updated encoded data slice to produce a vector; and

matrix multiplying the vector by a row of the encoding matrix corresponding to the corresponding one of the at least some of the encoded data slices that includes the error recovery information to produce the first term.

5. The method of claim 4 , wherein the generating the second term comprises:

matrix multiplying the inverted matrix by the encoded data slice to produce a second vector; and

matrix multiplying the second vector by the row of the encoding matrix corresponding to the corresponding one of the at least some of the encoded data slices that includes the error recovery information to produce the second term.

6. The method of claim 1 , wherein the updating the error recovery information by one of the at least some of the set of DS units comprises:

executing a mathematical function on the encoded data slice that includes the error recovery information and the corresponding one of the collection of partial error recovery information to produce the encoded data slice that includes updated error recovery information.

7. A dispersed storage (DS) module comprises:

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

facilitate receiving an updated encoded data slice, wherein the updated encoded data slice is an updated version of an encoded data slice of a set of encoded data slices, wherein data is encoded in accordance with a dispersed storage error coding function to produce the set of encoded data slices and wherein at least some of the encoded data slices of the set of encoded data slices include error recovery information; and

facilitate storing the updated encoded data slice; and

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

for each one of the at least some of the encoded data slices that include the error recovery information, generate partial error recovery information based on one or more of: the encoded data slice, the updated encoded data slice, update information, and the dispersed storage error coding function to produce a collection of partial error recovery information;

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

facilitate outputting the collection of partial error recovery information for storage in at least some of a set of DS units, which store the at least some of the encoded data slices that include error recovery information.

8. The DS module of claim 7 , wherein the update information comprises one or more of:

a slice name, a revision number of the updated encoded data slice, a generator matrix, an encoding matrix, a pillar number of the updated encoded data slice.

9. The DS module of claim 7 , wherein the second module functions to generate one of the collection of partial error recovery information by:

generating a first term of a corresponding one of the at least some of the encoded data slices that includes the error recovery information based on the updated encoded data slice in accordance with the dispersed storage error coding function;

generating a second term of the corresponding one of the at least some of the encoded data slices that includes the error recovery information based on the encoded data slice in accordance with the dispersed storage error coding function; and

performing a mathematical function on the first and second terms to produce the one of the collection of partial error recovery information.

10. The DS module of claim 9 , wherein the second module functions to generate the first term by:

obtaining an encoding matrix of the dispersed storage error coding function;

reducing the encoding matrix to produce a square matrix that excludes one or more rows including a row associated with the corresponding one of the at least some of the encoded data slices that includes the error recovery information;

inverting the square matrix to produce an inverted matrix;

matrix multiplying the inverted matrix by the updated encoded data slice to produce a vector; and

matrix multiplying the vector by a row of the encoding matrix corresponding to the corresponding one of the at least some of the encoded data slices that includes the error recovery information to produce the first term.

11. The DS module of claim 10 , wherein the second module functions to generate the second term by:

matrix multiplying the inverted matrix by the encoded data slice to produce a second vector; and

matrix multiplying the second vector by the row of the encoding matrix corresponding to the corresponding one of the at least some of the encoded data slices that includes the error recovery information to produce the second term.

12. A dispersed storage (DS) system comprises:

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

update an encoded data slice of a set of encoded data slices to produce an updated encoded data slice, wherein data is encoded in accordance with a dispersed storage error coding function to produce the set of encoded data slices and wherein at least some of the encoded data slices of the set of encoded data slices include error recovery information;

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

for each one of the at least some of the encoded data slices that include error recovery information, generate partial error recovery information based on one or more of: the encoded data slice, the updated encoded data slice, update information, and the dispersed storage error coding function to produce a collection of partial error recovery information; and

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

update the error recovery information of an encoded data slice of the at least some of the encoded data slices that include the error recovery information based on a corresponding one of the collection of partial error recovery information to produce an encoded data slice that includes updated error recovery information.

13. The DS system of claim 12 , wherein the update information comprises one or more of:

a slice name, a revision number of the updated encoded data slice, a generator matrix, an encoding matrix, a pillar number of the updated encoded data slice.

14. The DS system of claim 12 , wherein the second module functions to generate one of the collection of partial error recovery information by:

generating a first term of a corresponding one of the at least some of the encoded data slices that includes the error recovery information based on the updated encoded data slice in accordance with the dispersed storage error coding function;

generating a second term of the corresponding one of the at least some of the encoded data slices that includes the error recovery information based on the encoded data slice in accordance with the dispersed storage error coding function; and

performing a mathematical function on the first and second terms to produce the one of the collection of partial error recovery information.

15. The DS system of claim 14 , wherein the second module functions to generate the first term by:

obtaining an encoding matrix of the dispersed storage error coding function;

reducing the encoding matrix to produce a square matrix that excludes one or more rows including a row associated with the corresponding one of the at least some of the encoded data slices that includes the error recovery information;

inverting the square matrix to produce an inverted matrix;

matrix multiplying the inverted matrix by the updated encoded data slice to produce a vector; and

matrix multiplying the vector by a row of the encoding matrix corresponding to the corresponding one of the at least some of the encoded data slices that includes the error recovery information to produce the first term.

16. The DS system of claim 15 , wherein the second module functions to generate the second term by:

matrix multiplying the inverted matrix by the encoded data slice to produce a second vector; and

matrix multiplying the second vector by the row of the encoding matrix corresponding to the corresponding one of the at least some of the encoded data slices that includes the error recovery information to produce the second term.

17. The DS system of claim 12 , wherein the third module functions to update the error recovery information by:

executing a mathematical function on the encoded data slice that includes the error recovery information and the corresponding one of the collection of partial error recovery information to produce the encoded data slice that includes updated error recovery information.

Assignments (4)
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 Mar 6, 2012
From: RESCH, JASON K.
To: CLEVERSAFE, INC.
Reel/Frame 027815/0824 →