IP Library Granted Patent US 10,235,237
Granted Patent B2
US 10,235,237 · App. 15/629,134 · Granted Mar 19, 2019

Decoding data streams in a distributed 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,235,237
App. No.
15/629,134
Granted
Mar 19, 2019
Kind
B2
Abstract

A method begins by a dispersed storage (DS) processing module receiving one or more pairs of coded values and continues with the DS processing module creating a received coded matrix from the one or more pairs of coded values, followed by the generation of a data matrix. When a decode threshold number of pairs of coded values are included in a first plurality of data blocks corresponding to a data stream from the data matrix and the decode threshold number of pairs of coded values are determined to be valid, the decode threshold number of pairs of coded values are decoded. The method continues with the generation of a second data matrix and the data stream is extracted from the second data matrix.

Claims (75)

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

receiving, by the computing device, one or more pairs of coded values, wherein a pair of coded values of the one or more pairs of coded values includes a coded value corresponding to one of a first plurality of data segments and a coded value corresponding to the one of a second plurality of data segments and wherein each of a first data stream and a second data stream are segmented to produce the first plurality of data segments corresponding to the first data stream and the second plurality of data segments corresponding to the second data stream;

creating, by a processing module of the one or more processing modules, a received coded matrix from the one or more pairs of coded values;

generating, by the processing module, a first data matrix from the received coded matrix and an encoding matrix;

identifying, by the processing module, a first plurality of data blocks of the first data matrix that correspond to the first data stream;

determining, by the processing module, whether the first plurality of data blocks includes a decode threshold number of pairs of coded values; and

when the first plurality of data blocks includes a decode threshold number of pairs of coded values, determining whether the decode threshold number of pairs of coded values are valid;

decoding, by the processing module, the decode threshold number of pairs of coded values;

generating, by the processing module, a second data matrix; and

extracting, by the processing module, the first data stream from the second data matrix.

2. The method of claim 1 further comprises:

identifying a second plurality of data blocks of the first data matrix that correspond to the second data stream;

determining whether the second plurality of data blocks includes a decode threshold number of pairs of coded values; and

when the second plurality of data blocks includes a decode threshold number of pairs of coded values, determining whether the decode threshold number of pairs of coded values are valid;

decoding the decode threshold number of pairs of coded values to

generating a third data matrix; and

extracting the second data stream from the third data matrix.

3. The method of claim 1 , wherein the identifying a first plurality of data blocks of the first data matrix that correspond to the first data stream is based on at least one of an encoding scheme, a decoding scheme, a number of data streams, a desired data stream indicator, a data stream position indicator, and a message.

4. The method of claim 1 , wherein the first data matrix is an encoded data slice matrix.

5. The method of claim 4 , wherein the second data matrix is at least a portion of an encoded data slice matrix.

6. The method of claim 1 further comprises:

generating a fourth matrix before extracting the first data stream from the second data matrix, wherein the fourth matrix is based on at least a portion of the second matrix.

7. The method of claim 1 , wherein the determining whether the decode threshold number of pairs of coded values are valid is based on whether a value calculated from a decoded data selection associated with the first data block compares favorably to a received value for the first data block.

8. A computing device comprises:

a network interface;

memory; and

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

receive one or more pairs of coded values, wherein a pair of coded values of the one or more pairs of coded values includes a coded value corresponding to one of a first plurality of data segments and a coded value corresponding to the one of a second plurality of data segments and wherein each of a first data stream and a second data stream are segmented to produce the first plurality of data segments corresponding to the first data stream and the second plurality of data segments corresponding to the second data stream;

create a received coded matrix from the one or more pairs of coded values;

generate a first data matrix from the received coded matrix and an encoding matrix;

identify a first plurality of data blocks of the first data matrix that correspond to the first data stream;

determine whether the first plurality of data blocks includes a decode threshold number of pairs of coded values; and

when the first plurality of data blocks includes a decode threshold number of pairs of coded values, determine whether the decode threshold number of pairs of coded values are valid;

decode the decode threshold number of pairs of coded values;

generate a second data matrix; and

extract the first data stream from the second data matrix.

9. The computing device of claim 8 , wherein the processing module is further operable to:

identify a second plurality of data blocks of the first data matrix that correspond to the second data stream;

determine whether the second plurality of data blocks includes a decode threshold number of pairs of coded values; and

when the second plurality of data blocks includes a decode threshold number of pairs of coded values, determine whether the decode threshold number of pairs of coded values are valid;

decode the decode threshold number of pairs of coded values to

generate a third data matrix; and

extract the second data stream from the third data matrix.

10. The computing device of claim 8 , wherein the first plurality of data blocks of the first data matrix that correspond to the first data stream is identified based on at least one of an encoding scheme, a decoding scheme, a number of data streams, a desired data stream indicator, a data stream position indicator, and a message.

11. The computing device of claim 10 further comprises:

generate a fourth matrix before extracting the first data stream from the second data matrix, wherein the fourth matrix is based on at least a portion of the second matrix.

12. The computing device of claim 8 , wherein, the first data matrix is an encoded data slice matrix.

13. The computing device of claim 8 , wherein the second data matrix is at least a portion of an encoded data slice matrix.

14. The computing device of claim 8 , wherein the determine whether the decode threshold number of pairs of coded values are valid is based on whether a value calculated from a decoded data selection associated with the first data block compares favorably to a received value for the first data block.

15. A non-transitory computer readable storage device comprises:

a first memory section that stores operational instruction that, when executed by a computing device, causes the computing device to:

receive one or more pairs of coded values, wherein a pair of coded values of the one or more pairs of coded values includes a coded value corresponding to one of a first plurality of data segments and a coded value corresponding to the one of a second plurality of data segments and wherein each of a first data stream and a second data stream are segmented to produce the first plurality of data segments corresponding to the first data stream and the second plurality of data segments corresponding to the second data stream;

a second memory section that stores operational instruction that, when executed by the computing device, causes the computing device to:

create a received coded matrix from the one or more pairs of coded values; and

generate a first data matrix from the received coded matrix and an encoding matrix;

a third memory section that stores operational instruction that, when executed by the computing device, causes the computing device to:

identify a first plurality of data blocks of the first data matrix that correspond to the first data stream;

determine whether the first plurality of data blocks includes a decode threshold number of pairs of coded values; and

when the first plurality of data blocks includes a decode threshold number of pairs of coded values, determine whether the decode threshold number of pairs of coded values are valid;

decode the decode threshold number of pairs of coded values;

generate a second data matrix; and

extract the first data stream from the second data matrix.

16. The non-transitory computer readable storage device of claim 15 , wherein the third memory section further stores operational instruction that, when executed by the computing device, causes the computing device to:

identify a second plurality of data blocks of the first data matrix that correspond to the second data stream;

determine whether the second plurality of data blocks includes a decode threshold number of pairs of coded values; and

when the second plurality of data blocks includes a decode threshold number of pairs of coded values, determine whether the decode threshold number of pairs of coded values are valid;

decode the decode threshold number of pairs of coded values to

generate a third data matrix; and

extract the second data stream from the third data matrix.

17. The non-transitory computer readable storage device of claim 15 , wherein the third memory section further stores operational instruction that, when executed by the computing device, causes the computing device to:

generate the first data matrix based on at least one of an encoding scheme, a decoding scheme, a number of data streams, a desired data stream indicator, a data stream position indicator, and a message.

18. The non-transitory computer readable storage device of claim 15 , wherein the third memory section further stores operational instruction that, when executed by the computing device, causes the computing device to:

generate a fourth matrix before extracting the first data stream from the second data matrix, wherein the fourth matrix is based on at least a portion of the second matrix.

19. The non-transitory computer readable storage device of claim 15 , wherein the third memory section further stores operational instruction that, when executed by the computing device, causes the computing device to:

determine whether the decode threshold number of pairs of coded values are valid based on whether a value calculated from a decoded data selection associated with the first data block compares favorably to a received value for the first data block.

Assignments (5)
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 Jun 21, 2017
From: GRUBE, GARY W.; MARKISON, TIMOTHY W.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 042769/0914 →
Cited By (1)
US 12,436,837