IP Library Granted Patent US 9,495,117
Granted Patent B2
US 9,495,117 · App. 14/454,942 · Granted Nov 15, 2016

Storing data 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 9,495,117
App. No.
14/454,942
Granted
Nov 15, 2016
Kind
B2
Abstract

A method begins by a processing module of a dispersed storage network (DSN) sending a set of write commands to storage units of the DSN regarding storage of a set of current revision level encoded data slices and receiving a write acknowledgement in response to a write command. The method continues with the processing module determining whether a write threshold number of write acknowledgements have been received. When the write threshold number of write acknowledgements have been received, the method continues with the processing module issuing a set of commit commands to the storage units. The method continues with the processing module determining whether to issue a set of finalize commands, where a finalize command instructs a storage unit regarding storage of a corresponding current revision level encoded data slice and storage of a previous revision level encoded data.

Claims (83)

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:

sending a set of write commands to storage units of the DSN regarding storage of a set of current revision level encoded data slices, wherein a current revision level of a data segment is dispersed storage error encoded to produce the set of current revision level encoded data slices;

receiving a write acknowledgement in response to a write command of the set of write commands from one of the storage units indicating that the one of the storage units successfully stored, but has not made available for accessing, a current revision level encoded data slice of the set of current revision level encoded data slices;

determining whether a write threshold number of write acknowledgements have been received within a given period indicating that a write threshold number of current revision level encoded data slices of the set of current revision level encoded data slices have been successfully stored, but are not yet available for accessing;

when the write threshold number of write acknowledgements have been received within the given period, issuing a set of commit commands to the storage units regarding making successfully stored current revision level encoded data slices available for accessing; and

subsequent to issuing the set of commit commands, determining whether to issue a set of finalize commands based on one of: receiving a request for dispersed storage error encoded storage of a data segment having a more recent revision level than the current revision level and receiving a request to make the determination; wherein a finalize command of the set of finalize commands instructs a storage unit of the storage units regarding storage of a corresponding current revision level encoded data slice of the set of current revision level encoded data slices and storage of a previous revision level encoded data slice of a set of previous revision level encoded data slices, wherein the data segment with the previous revision level is dispersed storage error encoded to produce the set of previous revision level encoded data slices.

2. The method of claim 1 further comprises:

receiving a commit acknowledgement in response to a commit command of the set of commit commands from the one of the storage units indicating that the one of the storage units has made the current revision level encoded data slice available for accessing;

issuing the set of finalize commands when a predetermined number of commit acknowledgments have been received from the storage units, wherein the predetermined number is greater than the write threshold number of current revision level encoded data slices; and

not issuing the set of finalize commands when a number of received commit acknowledgements is below the predetermined number.

3. The method of claim 1 further comprises:

when the determining whether to issue the set of finalize commands is initiated:

determining whether a write threshold number of commit acknowledgments have been received from the storage units;

when the write threshold number of commit acknowledgments have been received from the storage units, issuing the set of finalize commands; and

when the write threshold number of commit acknowledgments have not been received from the storage units, issuing a set of undo commands to the storage units.

4. The method of claim 1 further comprises:

receiving a command to not issue the set of finalize commands.

5. The method of claim 1 , wherein the finalize command comprises:

an instruction to maintain storage of the current revision level encoded data slice and to delete the previous revision level encoded data slice.

6. The method of claim 1 , wherein the finalize command comprises:

an instruction to maintain storage of both of the current revision level encoded data slice and the previous revision level encoded data slice.

7. The method of claim 1 , wherein the finalize command comprises:

an instruction to delete the current revision level encoded data slice and to maintain storage of the previous revision level encoded data slice.

8. The method of claim 1 further comprises:

when the write threshold number of write acknowledgements have not been received within the given period, issuing a set of rollback commands to the storage units.

9. A non-transitory computer readable storage medium comprises:

at least one memory section that stores operational instructions that, when executed by one or more processing modules of one or more computing devices of a dispersed storage network (DSN), causes the one or more computing devices to:

send a set of write commands to storage units of the DSN regarding storage of a set of current revision level encoded data slices, wherein a current revision level of a data segment is dispersed storage error encoded to produce the set of current revision level encoded data slices;

receive a write acknowledgement in response to a write command of the set of write commands from one of the storage units indicating that the one of the storage units successfully stored, but has not made available for accessing, a current revision level encoded data slice of the set of current revision level encoded data slices;

determine whether a write threshold number of write acknowledgements have been received within a given period indicating that a write threshold number of current revision level encoded data slices of the set of current revision level encoded data slices have been successfully stored, but are not yet available for accessing;

when the write threshold number of write acknowledgements have been received within the given period, issue a set of commit commands to the storage units regarding making successfully stored current revision level encoded data slices available for accessing; and

subsequent to issuing the set of commit commands, determine whether to issue a set of finalize commands based on one of: receiving a request for dispersed storage error encoded storage of a data segment having a more recent revision level than the current revision level and receiving a request to make the determination; wherein a finalize command of the set of finalize commands instructs a storage unit of the storage units regarding storage of a corresponding current revision level encoded data slice of the set of current revision level encoded data slices and storage of a previous revision level encoded data slice of a set of previous revision level encoded data slices, wherein the data segment with the previous revision level is dispersed storage error encoded to produce the set of previous revision level encoded data slices.

10. The non-transitory computer readable storage medium of claim 9 further comprises:

the at least one memory section stores further operational instructions that, when executed by the one or more processing modules, causes the one or more computing devices of the DSN to:

receive a commit acknowledgement in response to a commit command of the set of commit commands from the one of the storage units indicating that the one of the storage units has made the current revision level encoded data slice available for accessing;

issue the set of finalize commands when a predetermined number of commit acknowledgments have been received from the storage units, wherein the predetermined number is greater than the write threshold number of current revision level encoded data slices; and

not issue the set of finalize commands when a number of received commit acknowledgements is below the predetermined number.

11. The non-transitory computer readable storage medium of claim 9 further comprises:

the at least one memory section stores further operational instructions that, when executed by the one or more processing modules, causes the one or more computing devices of the DSN to:

when the determining whether to issue the set of finalize commands is initiated:

determine whether a write threshold number of commit acknowledgments have been received from the storage units;

when the write threshold number of commit acknowledgments have been received from the storage units, issue the set of finalize commands; and

when the write threshold number of commit acknowledgments have not been received from the storage units, issue a set of undo commands to the storage units.

12. The non-transitory computer readable storage medium of claim 9 further comprises:

the at least one memory section stores further operational instructions that, when executed by the one or more processing modules, causes the one or more computing devices of the DSN to:

receive a command to not issue the set of finalize commands.

13. The non-transitory computer readable storage medium of claim 9 , wherein the finalize command comprises:

an instruction to maintain storage of the current revision level encoded data slice and to delete the previous revision level encoded data slice.

14. The non-transitory computer readable storage medium of claim 9 , wherein the finalize command comprises:

an instruction to maintain storage of both of the current revision level encoded data slice and the previous revision level encoded data slice.

15. The non-transitory computer readable storage medium of claim 9 , wherein the finalize command comprises:

an instruction to delete the current revision level encoded data slice and to maintain storage of the previous revision level encoded data slice.

16. The non-transitory computer readable storage medium of claim 9 further comprises:

the at least one memory section stores further operational instructions that, when executed by the one or more processing modules, causes the one or more computing devices of the DSN to:

when the write threshold number of write acknowledgements have not been received within the given period, issue a set of rollback commands to the storage units.

17. A computing device of a dispersed storage network (DSN), the computing device comprises:

an interface;

a memory; and

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

send, via the interface, a set of write commands to storage units of the DSN regarding storage of a set of current revision level encoded data slices, wherein a current revision level of a data segment is dispersed storage error encoded to produce the set of current revision level encoded data slices;

receive, via the interface, a write acknowledgement in response to a write command of the set of write commands from one of the storage units indicating that the one of the storage units successfully stored, but has not made available for accessing, a current revision level encoded data slice of the set of current revision level encoded data slices;

determine whether a write threshold number of write acknowledgements have been received within a given period indicating that a write threshold number of current revision level encoded data slices of the set of current revision level encoded data slices have been successfully stored, but are not yet available for accessing;

when the write threshold number of write acknowledgements have been received within the given period, issue, via the interface, a set of commit commands to the storage units regarding making successfully stored current revision level encoded data slices available for accessing; and

subsequent to issuing the set of commit commands, determine whether to issue a set of finalize commands based on one of: receiving a request for dispersed storage error encoded storage of a data segment having a more recent revision level than the current revision level and receiving a request to make the determination; wherein a finalize command of the set of finalize commands instructs a storage unit of the storage units regarding storage of a corresponding current revision level encoded data slice of the set of current revision level encoded data slices and storage of a previous revision level encoded data slice of a set of previous revision level encoded data slices, wherein the data segment with the previous revision level is dispersed storage error encoded to produce the set of previous revision level encoded data slices.

18. The computing device of claim 17 , wherein the processing module further functions to:

receive, via the interface, a commit acknowledgement in response to a commit command of the set of commit commands from the one of the storage units indicating that the one of the storage units has made the current revision level encoded data slice available for accessing;

issue, via the interface, the set of finalize commands when a predetermined number of commit acknowledgments have been received from the storage units, wherein the predetermined number is greater than the write threshold number of current revision level encoded data slices; and

not issue the set of finalize commands when a number of received commit acknowledgements is below the predetermined number.

19. The computing device of claim 17 , wherein the processing module further functions to:

when the determining whether to issue the set of finalize commands is initiated:

determine whether a write threshold number of commit acknowledgments have been received from the storage units;

when the write threshold number of commit acknowledgments have been received from the storage units, issue, via the interface, the set of finalize commands; and

when the write threshold number of commit acknowledgments have not been received from the storage units, issue, via the interface, a set of undo commands to the storage units.

20. The computing device of claim 17 , wherein the processing module further functions to:

receive a command to not issue the set of finalize commands.

21. The computing device of claim 17 , wherein the finalize command comprises:

an instruction to maintain storage of the current revision level encoded data slice and to delete the previous revision level encoded data slice.

22. The computing device of claim 17 , wherein the finalize command comprises:

an instruction to maintain storage of both of the current revision level encoded data slice and the previous revision level encoded data slice.

23. The computing device of claim 17 , wherein the finalize command comprises:

an instruction to delete the current revision level encoded data slice and to maintain storage of the previous revision level encoded data slice.

24. The computing device of claim 17 , wherein the processing module further functions to:

when the write threshold number of write acknowledgements have not been received within the given period, issue, via the interface, a set of rollback commands to the storage units.

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 6, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038629/0015 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 26, 2014
From: BAPTIST, ANDREW; LEGGETTE, WESLEY; RESCH, JASON K.
To: CLEVERSAFE, INC.
Reel/Frame 033828/0774 →