US2019179696A1PendingUtilityA1

Demultiplexing decoded data streams in a distributed storage network

Assignee: IBMPriority: Sep 6, 2011Filed: Feb 19, 2019Published: Jun 13, 2019
Est. expirySep 6, 2031(~5.1 yrs left)· nominal 20-yr term from priority
G06F 11/10H03M 13/616G06F 16/24568H03M 13/1148H04L 65/607H04L 65/70H04L 65/765H03M 13/1515H03M 13/373G06F 11/1076
58
PatentIndex Score
0
Cited by
0
References
0
Claims

Abstract

A user device in a distributed storage network (DSN) includes an interface, one or more memory devices; and a processing module operable to receive a plurality of encoded data slices of a set of encoded data slices and generate a populated received slice matrix. Once a decode threshold number of encoded data slices have been received, the dispersed error encoded data slices are decoded to produce a first decoded data selection and based on the first decoded data selection and a second decoded data selection, an intermediate matrix is generated. A first data stream and a second data stream are then generated from the intermediate matrix.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
         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 plurality of encoded data slices of a set of encoded data slices, wherein a data object is segmented to create a plurality of data segments and wherein each data segment of the plurality of data segments is encoded to produce a set of encoded data slices;   generating a populated received slice matrix based on the plurality of encoded data slices;   determining whether a decode threshold number of encoded data slices have been received;   in response to a determination that a decode threshold number of encoded data slices has been received, decoding the decode threshold number of encoded data slices to produce a first decoded data selection;   based on the first decoded data selection and at least a second decoded data selection, generating an intermediate matrix, wherein each of the first decoded data selection and the second decoded data selection is decoded from a column of the populated received slice matrix; and   generating at least a first data stream and a second data stream from the intermediate matrix.   
     
     
         2 . The method of  claim 1 , wherein each of the first decoded data selection and the second decoded data selection correspond to a column of the intermediate matrix. 
     
     
         3 . The method of  claim 1 , further comprising:
 in response to a determination that a decode threshold number of dispersed error encoded data slices has been received, further determining whether the first decoded data selection passes an integrity test, and   in response to a determination that the first decoded data selection does not pass an integrity test, transmitting a notification that at least one more dispersed error encoded data slice is needed.   
     
     
         4 . The method of  claim 3 , further comprising:
 in response to a determination that the first decoded data selection passes an integrity test, transmitting a notification that no more dispersed error encoded data slices are needed.   
     
     
         5 . The method of  claim 1 , further comprising:
 in response to a determination that a decode threshold number of dispersed error encoded data slices has been received, further determining whether another decoded data selection is to be produced, wherein the determining is based on verifying that each column of the populated received slice matrix is associated with a corresponding data selection.   
     
     
         6 . The method of  claim 1 , wherein each of the first data stream and the second data stream are associated with at least one row of the intermediate matrix. 
     
     
         7 . The method of  claim 6 , wherein each of the first data stream is associated with a first row of the intermediate matric and the second data stream are associated with at least a second row and a third row of the intermediate matrix. 
     
     
         8 . The method of  claim 1 , further comprising:
 in response to a determination that the plurality of encoded data slices should not have included a decode threshold number of dispersed error encoded data slices, determining to receive at least one more dispersed error encoded data slice.   
     
     
         9 . The method of  claim 1 , further comprising:
 after generating a populated received slice matrix based on the plurality of encoded data slices, determining whether the plurality of encoded data slices should have included a decode threshold number of encoded data slices, wherein the determining whether the plurality of encoded data slices should have included a decode threshold number of encoded data slices is based on at least one of comparing a count of a number of bytes per column of the populated received slice matrix to the decode threshold number of encoded data slices, comparing a count of a number of byte positions per column received of the populated received slice matrix to the decode threshold number of encoded data slices, received slice names and a decode threshold number indicator.   
     
     
         10 . A user device in a distributed storage network (DSN) comprises:
 an interface for interfacing with a network;   one or more memory devices; and   a processing module operably coupled to the interface and to the one or more memory devices, wherein the processing module is operable to:
 receive a plurality of encoded data slices of a set of encoded data slices, wherein a data object is segmented to create a plurality of data segments and wherein each data segment of the plurality of data segments is encoded to produce a set of encoded data slices; 
 generate a populated received slice matrix based on the plurality of encoded data slices; 
 determine whether a decode threshold number of encoded data slices have been received; 
 in response to a determination that a decode threshold number of encoded data slices has been received, decode the decode threshold number of encoded data slices to produce a first decoded data selection; 
 based on the first decoded data selection and at least a second decoded data selection, generate an intermediate matrix, wherein each of the first decoded data selection and the second decoded data selection is decoded from a column of the populated received slice matrix; and 
 generate at least a first data stream and a second data stream from the intermediate matrix. 
   
     
     
         11 . The user device of  claim 10 , wherein each of the first decoded data selection and the second decoded data selection correspond to a column of the intermediate matrix. 
     
     
         12 . The user device of  claim 10 , wherein the processing module is further operable to:
 in response to a determination that a decode threshold number of dispersed error encoded data slices has been received, determine whether the first decoded data selection passes an integrity test, and   in response to a determination that the first decoded data selection does not pass an integrity test, transmit a notification that at least one more dispersed error encoded data slice is needed.   
     
     
         13 . The user device of  claim 12 , wherein the processing module is further operable to:
 in response to a determination that the first decoded data selection passes an integrity test, transmit a notification that no more dispersed error encoded data slices are needed.   
     
     
         14 . The user device of  claim 10 , wherein the processing module is further operable to:
 in response to a determination that a decode threshold number of dispersed error encoded data slices has been received, further determine whether another decoded data selection is to be produced, wherein the determining is based on verifying that each column of the populated received slice matrix is associated with a corresponding data selection.   
     
     
         15 . The user device of  claim 10 , wherein each of the first data stream and the second data stream are associated with at least one row of the intermediate matrix. 
     
     
         16 . The user device of  claim 10 , wherein each of the first data stream is associated with a first row of the intermediate matric and the second data stream are associated with at least a second row and a third row of the intermediate matrix. 
     
     
         17 . The user device of  claim 10 , wherein the processing module is further operable to:
 in response to a determination that the plurality of encoded data slices should not have included a decode threshold number of dispersed error encoded data slices, determine to receive at least one more dispersed error encoded data slice.   
     
     
         18 . The user device of  claim 10 , wherein the processing module is further operable to:
 after a populated received slice matrix based on the plurality of encoded data slices is generated, determine whether the plurality of encoded data slices should have included a decode threshold number of encoded data slices, wherein the determination whether the plurality of encoded data slices should have included a decode threshold number of encoded data slices is based on at least one of comparing a count of a number of bytes per column of the populated received slice matrix to the decode threshold number of encoded data slices, comparing a count of a number of byte positions per column received of the populated received slice matrix to the decode threshold number of encoded data slices, received slice names and a decode threshold number indicator.   
     
     
         19 . 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 plurality of dispersed error encoded data slices of a set of encoded data slices, wherein a data object is segmented to create a plurality of data segments and wherein each data segment of the plurality of data segments is dispersed error encoded to produce a set of encoded data slices;   populating a received slice matrix with the one or more encoded data slices to produce a populated received slice matrix;   determining whether the plurality of dispersed error encoded data slices should have included a decode threshold number of dispersed error encoded data slices, wherein a decode threshold number of dispersed error encoded data slices is required to rebuild a data segment;   in response to a determination that the plurality of dispersed error encoded data slices should have included a decode threshold number of dispersed error encoded data slices, determining whether a decode threshold number of dispersed error encoded data slices have been received;   in response to a determination that a decode threshold number of dispersed error encoded data slices has been received, decoding the decode threshold number of dispersed error encoded data slices to produce a first decoded data selection;   based on the first decoded data selection and at least a second decoded data selection, generating an intermediate matrix, wherein each of the first decoded data selection and the second decoded data selection is decoded from a column of the received slice matrix; and   generating at least a first data stream and a second data stream from the intermediate matrix.   
     
     
         20 . The method of  claim 19 , wherein each of the first data stream and the second data stream are associated with at least one row of the intermediate matrix.

Join the waitlist — get patent alerts

Track US2019179696A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.