IP Library Granted Patent US 12,079,380
Granted Patent B2
US 12,079,380 · App. 18/218,705 · Granted Sep 3, 2024

Recovering data from encoded data slices interspersed with auxiliary data

Inventors: S. Christopher Gladwin (Chicago, IL); Chuck Wilson Templeton (Chicago, IL); Jason K. Resch (Warwick, RI); Gary W. Grube (Barrington Hills, IL)
Assignee: Pure Storage, Inc.
G06F21/85G06F3/0619G06F3/0647G06F3/067G06F11/1076G06F21/72G06F21/80H04L9/3242H04L67/1097H04N21/222H04N21/2347H04N21/8456H04W12/033G06F11/1008G06F2211/1028G06F2221/2107H04L65/764H04W12/02
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 12,079,380
App. No.
18/218,705
Granted
Sep 3, 2024
Kind
B2
Abstract

A method includes obtaining input encoded data slices from memory of the storage network, where the input encoded data slices include a set of encoded data slices interspersed with a set of auxiliary data slices, where a data segment was error encoded into the set of encoded data slices, and where auxiliary data was error encoded into the set of auxiliary data slices. The method further includes obtaining de-selection information associated with the input encoded data slices and de-selecting the sequence of input encoded data slices based on the de-selection information to produce deselected encoded data slices. The method further includes error decoding at least a decode threshold number of encoded data slices of the deselected encoded data slices in accordance with error decoding parameters to reproduce the data segment. The method further includes outputting the data segment to a requesting computing device of the storage network.

Claims (81)

1. A method for execution by one or more computing devices of a storage network, the method comprises:

obtaining input encoded data slices from memory of the storage network, wherein the input encoded data slices include a set of encoded data slices interspersed with a set of auxiliary data slices, wherein a data segment was error encoded into the set of encoded data slices, and wherein auxiliary data was error encoded into the set of auxiliary data slices;

obtaining de-selection information associated with the input encoded data slices;

de-selecting the sequence of input encoded data slices based on the de-selection information to produce deselected encoded data slices of the set of encoded data slices;

error decoding at least a decode threshold number of encoded data slices of the deselected encoded data slices in accordance with error decoding parameters to reproduce the data segment; and

outputting the data segment to a requesting computing device of the storage network.

2. The method of claim 1 further comprises:

receiving a request for the data segment from the requesting computing device.

3. The method of claim 1 further comprises:

de-selecting the sequence of input encoded data slices based on the de-selection information to produce the set of auxiliary data slices; and

error decoding the auxiliary data slices in accordance with auxiliary decoding parameters to reproduce the auxiliary data.

4. The method of claim 3 , wherein the auxiliary decoding parameters are the same as the error decoding parameters.

5. The method of claim 3 further comprises:

determining the deselected encoded data slices are in a random sequence based on the auxiliary data; and

de-sequencing the random sequence of the deselected encoded data slices to produce an ordered sequence of the at least the decode threshold number of encoded data slices, wherein the auxiliary data comprises identity of the random sequence.

6. The method of claim 3 further comprises:

determining the data segment is encrypted based on the auxiliary data; and

decrypting the encrypted data segment utilizing a decryption key to produce the data segment, wherein the auxiliary data includes an identity of the decryption key.

7. The method of claim 1 further comprises:

obtaining operational parameters for the input encoded data slices; and

determining the error decoding parameters for the error decoding the at least the decode threshold number of encoded data slices based on the operational parameters.

8. The method of claim 1 , wherein the obtaining the de-selection information comprises performing a lookup.

9. The method of claim 1 , wherein the de-selection information an identifier of a de-selection algorithm.

10. The method of claim 1 , wherein the auxiliary data comprises at least one of:

null data;

authentication information;

a next pseudo random output sequencing order;

a pseudo random output sequencing order identifier;

a next outputting threshold;

a random number generator output;

an encryption key;

a starting point for the pseudo random output sequencing order;

a device identifier;

a data identifier;

a data type;

a data size indicator;

a priority indicator;

a security indicator; or

a performance indicator.

11. A computing device of a storage network, the computing device comprises:

memory;

an interface; and

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

obtain input encoded data slices from memory of the storage network, wherein the input encoded data slices include a set of encoded data slices interspersed with a set of auxiliary data slices, wherein a data segment was error encoded into the set of encoded data slices, and wherein auxiliary data was error encoded into the set of auxiliary data slices;

obtain de-selection information associated with the input encoded data slices;

de-select the sequence of input encoded data slices based on the de-selection information to produce deselected encoded data slices of the set of encoded data slices;

error decode at least a decode threshold number of encoded data slices of the deselected encoded data slices in accordance with error decoding parameters to reproduce the data segment; and

output, via the interface, the data segment to a requesting computing device of the storage network.

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

receive, via the interface, a request for the data segment from the requesting computing device.

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

de-select the sequence of input encoded data slices based on the de-selection information to produce the set of auxiliary data slices; and

error decode the auxiliary data slices in accordance with auxiliary decoding parameters to reproduce the auxiliary data.

14. The computing device of claim 13 , wherein the processing module is further operable to determine the auxiliary decoding parameters are the same as the error decoding parameters.

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

determine the deselected encoded data slices are in a random sequence based on the auxiliary data; and

de-sequence the random sequence of the deselected encoded data slices to produce an ordered sequence of the at least the decode threshold number of encoded data slices, wherein the auxiliary data comprises identity of the random sequence.

16. The computing device of claim 13 , wherein the processing module is further operable to

determine the data segment is encrypted based on the auxiliary data; and

decrypt the encrypted data segment utilizing a decryption key to produce the data segment, wherein the auxiliary data includes an identity of the decryption key.

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

obtain operational parameters for the input encoded data slices; and

determine the error decoding parameters for the error decoding the at least the decode threshold number of encoded data slices based on the operational parameters.

18. The computing device of claim 11 , wherein the processing module is operable to obtain the de-selection information by performing a lookup.

19. The computing device of claim 11 , wherein the processing module is operable to determine the de-selection information includes an identifier of a de-selection algorithm.

20. The computing device of claim 11 , wherein the processing module is operable to determine the auxiliary data comprises at least one of:

null data;

authentication information;

a next pseudo random output sequencing order;

a pseudo random output sequencing order identifier;

a next outputting threshold;

a random number generator output;

an encryption key;

a starting point for the pseudo random output sequencing order;

a device identifier;

a data identifier;

a data type;

a data size indicator;

a priority indicator;

a security indicator; or

a performance indicator.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 13, 2023
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 064271/0923 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 12, 2023
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 064262/0132 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 11, 2023
From: GLADWIN, S. CHRISTOPHER; TEMPLETON, CHUCK WILSON; RESCH, JASON K.; GRUBE, GARY W.
To: CLEVERSAFE, INC.
Reel/Frame 064206/0912 →
Continuity (7)
Continuation 17663926 · May 18, 2022
Continuation 17247424 · Dec 10, 2020
Continuation 16201878 · Nov 27, 2018
Continuation In Part 14452182 · Aug 5, 2014
Continuation 12954880 · Nov 28, 2010
Provisional Application 61299245 · Jan 28, 2010
Related Publication 20230351062A1 · Nov 2, 2023