IP Library Granted Patent US 9,697,171
Granted Patent B2
US 9,697,171 · App. 14/335,915 · Granted Jul 4, 2017

Multi-writer revision synchronization 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,697,171
App. No.
14/335,915
Granted
Jul 4, 2017
Kind
B2
Abstract

A method begins by a processing module of a computing device receiving a most current revision value for a data element, where a revision value for the data element is generated based on a current time of a storing device. The method continues with the processing module generating a new revision value for a currently revised version of the data element based on a current time of the computing device and comparing the current time of the new revision value with the current time of the most current revision value. When the current time of the new revision value precedes the current time of the most current revision value, the method continues with the processing module adjusting the new revision value to produce an adjusted revision value and facilitating storage of the currently revised version of the data element having the adjusted revision value.

Claims (64)

1. A method for execution by a computing device, the method comprises:

receiving, from another computing device within a dispersed storage network (DSN) via a communication interface of the computing device and at processing hardware of the computing device, in response to a revision level request, a most current revision value for a data element, wherein a revision value for the data element is generated based on a current time of a local clock of a storing device that is implemented within the DSN to store at least one encoded data slice (EDS) of a set of encoded data slices (EDSs) that are distributedly stored in storage units of the DSN, wherein the data element including a data segment of a data object, wherein the data segment is dispersed storage error encoded to produce the set of EDSs, wherein a threshold number of EDSs of the set of EDSs are needed to recover the data segment;

generating, by the processing hardware of the computing device, a new revision value for a currently revised version of the data element based on a current time of a local clock of the computing device;

comparing, by the processing hardware of the computing device, the current time of the new revision value with the current time of the most current revision value; and

when the current time of the new revision value precedes the current time of the most current revision value:

adjusting, by the processing hardware of the computing device, the new revision value to produce an adjusted revision value, wherein the adjusted revision value has an effective current time that succeeds the current time of the most current revision value; and

sending the currently revised version of the data element having the adjusted revision value to the storing device that is implemented within the DSN including sending at least one other EDS of another set of EDSs to be distributedly stored in the storage units of the DSN, wherein the currently revised version of the data element including another data segment, wherein the another data segment is dispersed storage error encoded to produce the another set of EDSs, wherein the threshold number of EDSs of the another set of EDSs are needed to recover the another data segment.

2. The method of claim 1 further comprises:

when the current time of the new revision value succeeds the current time of the most current revision value, sending the currently revised version of the data element having the new revision value to the storing device.

3. The method of claim 1 , wherein the adjusting comprises:

generating the effective current time by incrementing the current time of the new revision value to a time that exceeds the current time of the most current revision value.

4. The method of claim 1 , wherein the adjusting comprises:

generating the effective current time by adding a count offset to a current count value of a running count, wherein the current time of the new revision value is expressed as the current count value and the running count is a measure of time.

5. The method of claim 1 further comprises:

sending the revision level request to one of the storage units that stores the at least one encoded data slice of the set of EDSs.

6. The method of claim 1 further comprises:

sending the revision level request to each of the storage units;

receiving a set of responses from the storage units; and

determining the current time of the most current version based on the set of responses.

7. 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:

receive, from another computing device within the dispersed storage network (DSN) via a communication interface of the one or more computing devices and in response to a revision level request, a most current revision value for a data element, wherein a revision value for the data element is generated based on a current time of a local clock of a storing device that is implemented within the DSN to store at least one encoded data slice (EDS) of a set of encoded data slices (EDSs) that are distributedly stored in storage units of the DSN, wherein the data element including a data segment of a data object, wherein the data segment is dispersed storage error encoded to produce the set of EDSs, wherein a threshold number of EDSs of the set of EDSs are needed to recover the data segment;

generate a new revision value for a currently revised version of the data element based on a current time of a local clock of a computing device of the one or more computing devices;

compare the current time of the new revision value with the current time of the most current revision value; and

when the current time of the new revision value precedes the current time of the most current revision value:

adjust the new revision value to produce an adjusted revision value, wherein the adjusted revision value has an effective current time that succeeds the current time of the most current revision value; and

sending the currently revised version of the data element having the adjusted revision value to the storing device that is implemented within the DSN including sending at least one other EDS of another set of EDSs to be distributedly stored in the storage units of the DSN, wherein the currently revised version of the data element including another data segment, wherein the another data segment is dispersed storage error encoded to produce the another set of EDSs, wherein the threshold number of EDSs of the another set of EDSs are needed to recover the another data segment.

8. The non-transitory computer readable storage medium of claim 7 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 current time of the new revision value succeeds the current time of the most current revision value, sending the currently revised version of the data element having the new revision value to the storing device.

9. The non-transitory computer readable storage medium of claim 7 , wherein the one or more processing modules functions to execute the operational instructions stored by the at least one memory section to cause the one or more computing devices of the DSN to adjust the new revision value by:

generating the effective current time by incrementing the current time of the new revision value to a time that exceeds the current time of the most current revision value.

10. The non-transitory computer readable storage medium of claim 7 , wherein the one or more processing modules functions to execute the operational instructions stored by the at least one memory section to cause the one or more computing devices of the DSN to adjust the new revision value by:

generating the effective current time by adding a count offset to a current count value of a running count, wherein the current time of the new revision value is expressed as the current count value and the running count is a measure of time.

11. The non-transitory computer readable storage medium of claim 7 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:

send the revision level request to one of the storage units that stores the at least one EDS encoded data slice of the set of EDSs.

12. The non-transitory computer readable storage medium of claim 7 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:

send the revision level request to each of the storage units;

receive a set of responses from the storage units; and

determine the current time of the most current version based on the set of responses.

13. A computing device comprises:

an interface;

a clock module that generates a clock value; and

a processing module operably coupled to the interface and the clock module, wherein the processing module includes processing hardware and functions to:

receive, from another computing device within a dispersed storage network (DSN) via the interface in response to a revision level request, a most current revision value for a data element, wherein a revision value for the data element is generated based on a current time of a local clock of a storing device that is implemented within the DSN to store at least one encoded data slice (EDS) of a set of encoded data slices (EDSs) that are distributedly stored in storage units of the DSN, wherein the data element including a data segment of a data object, wherein the data segment is dispersed storage error encoded to produce the set of EDSs, wherein a threshold number of EDSs of the set of EDSs are needed to recover the data segment;

generate a new revision value for a currently revised version of the data element based on a current time from the clock value of the clock module;

compare the current time of the new revision value with the current time of the most current revision value; and

when the current time of the new revision value precedes the current time of the most current revision value:

adjust the new revision value to produce an adjusted revision value, wherein the adjusted revision value has an effective current time that succeeds the current time of the most current revision value; and

sending the currently revised version of the data element having the adjusted revision value to the storing device that is implemented within the DSN including sending at least one other EDS of another set of EDSs to be distributedly stored in the storage units of the DSN, wherein the currently revised version of the data element including another data segment, wherein the another data segment is dispersed storage error encoded to produce the another set of EDSs, wherein the threshold number of EDSs of the another set of EDSs are needed to recover the another data segment.

14. The computing device of claim 13 , wherein the processing module further functions to:

when the current time of the new revision value succeeds the current time of the most current revision value, sending the currently revised version of the data element having the new revision value to the storing device.

15. The computing device of claim 13 , wherein the processing module functions to adjust the new revision value by:

generating the effective current time by incrementing the current time of the new revision value to a time that exceeds the current time of the most current revision value.

16. The computing device of claim 13 , wherein the processing module functions to adjust the new revision value by:

generating the effective current time by adding a count offset to a current count value of a running count, wherein the current time of the new revision value is expressed as the current count value and the running count is a measure of time.

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

send, via the interface, the revision level request to one of the storage units that stores the at least one EDS encoded data slice of the set of EDSs.

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

send, via the interface, the revision level request to each of the storage units;

receive, via the interface, a set of responses from the storage units; and

determine the current time of the most current version based on the set of responses.

Assignments (6)
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 May 6, 2016
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 038629/0015 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 25, 2014
From: BAPTIST, ANDREW; DHUSE, GREG; VOLVOVSKI, ILYA; RESCH, JASON K.; MARK, ZACHARY J.; CILFONE, BART
To: CLEVERSAFE, INC.
Reel/Frame 033821/0375 →