IP Library Granted Patent US 10,013,471
Granted Patent B2
US 10,013,471 · App. 15/223,707 · Granted Jul 3, 2018

Avoiding write conflicts in a dispersed storage network

Inventors: Andrew Baptist (Mt. Pleasant, WI); Greg Dhuse (Chicago, IL); Ilya Volvovski (Chicago, IL)
Assignee: International Business Machines Corporation
G06F17/30575G06F3/067G06F3/0619G06F3/0659G06F3/0689G06F17/30174H04L67/1097
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,013,471
App. No.
15/223,707
Granted
Jul 3, 2018
Kind
B2
Abstract

A method begins by a by a first device of a dispersed storage network (DSN) sending a set of write revision requests to storage units of the DSN. The method continues with one of the storage units generating a write revision response regarding a potential write conflict. The method continues with the first device receiving the write revision responses to produce a set of received write revision responses and interpreting the set of received write revision responses to determine whether a write conflict exists. When the write conflict exists, the method continues with the first device issuing a set of write roll back requests to the storage units. When the write conflict does not exist, the method continues with the first device issuing a set of next phase write requests to the storage units regarding storing revised encoded data slices.

Claims (85)

1. A method comprises:

sending, by a first device of a dispersed storage network (DSN), a set of write revision requests to storage units of the DSN, wherein a write revision request of the set of write revision requests includes a slice name and a revision number corresponding to a revision level of a set of revised encoded data slices, wherein the set of write revision requests does not include the set of revised encoded data slices;

generating, by one of the storage units, a write revision response regarding a potential write conflict based on the revision number;

receiving, by the first device, write revision responses from at least some of the storage units to produce a set of received write revision responses;

interpreting, by the first device, the set of received write revision responses to determine whether a write conflict exists;

when the write conflict exists, aborting, by the first device, a write function regarding storage of the set of revised encoded data slices by the storage units without sending the set of revised encoded data slices to the storage units; and

when the write conflict does not exist, issuing, by the first device, a set of write requests to the storage units regarding storing the set of revised encoded data slices, wherein each write request of the set of write requests includes a revised encoded data slice of the set of revised encoded data slices.

2. The method of claim 1 further comprises:

generating, by the one of the storage units, the write revision response to include a list of revision numbers that corresponds to a number of revised encoded data slices having the slice name that the one of the storage units is storing; and

interpreting, by the first device, the lists of revision numbers of the set of received write revision responses in view of the revision number by:

comparing a most recent revision number of the lists of revision numbers to the revision number; and

when at least a decode threshold number of the lists of revision numbers compare favorably to the revision number, indicating that the write conflict does not exist.

3. The method of claim 1 further comprises:

generating, by the one of the storage units, the write revision response to include a most recent revision number corresponding to a most recently stored one of the respective revised encoded data slices; and

interpreting, by the first device, most recent revision numbers of the set of received write revision responses in view of the revision number and when at least a decode threshold number of the most recent revision numbers compare favorably to the revision number, indicating that the write conflict does not exist.

4. The method of claim 1 further comprises:

generating, by the one of the storage units, the write revision response to include a favorable or unfavorable revision number indication; and

interpreting, by the first device, the set of received write revision responses by indicating that the write conflict does not exist when at least a decode threshold number of favorable revision number indications were received.

5. The method of claim 4 further comprises:

comparing, by the one of the storage units, a most recent revision number corresponding to a most recently stored one of the respective revised encoded data slices to the revision number;

when the most recent revision number is less than the revision number, indicating, by the one of the storage units, the favorable revision number indication; and

when the most recent revision number is greater than or equal to the revision number, indicating, by the one of the storage units, the unfavorable revision number indication.

6. The method of claim 1 further comprises:

locking, by the one of the storage units, the slice name for a corresponding one of the set of write revision requests; and

while the slice name is locked for the corresponding one of the set of write revision requests:

receiving, by the one of the storage units from a second device of the DSN, a second write revision request regarding the slice name; and

sending, by the one of the storage units, a write error message to the second device.

7. A dispersed storage network (DSN) comprises:

a first module, when operable based on processing circuitry within a first device of the DSN, causes the first device to send a set of write revision requests to storage units of the DSN, wherein a write revision request of the set of write revision requests includes a slice name and a revision number corresponding to a revision level of a set of revised encoded data slices, wherein the set of write revision requests does not include the set of revised encoded data slices;

a second module, when operable based on other processing circuitry within one of the storage units, causes the one of the storage units to generate a write revision response regarding a potential write conflict based on the revision number;

a third module, when operable based on the processing circuitry within the first device, causes the first device to interpret a set of received write revision responses to determine whether a write conflict exists, wherein the first device receives write revision responses from at least some of the storage units to produce the set of received write revision responses; and

a fourth module, when operable based on the processing circuitry within the first device, causes the first device to:

abort a write function regarding storage of the set of revised encoded data slices by the storage units without sending the set of revised encoded data slices to the storage units when the write conflict exists; and

issue a set of write requests to the storage units regarding storing the set of revised encoded data slices, wherein each write request of the set of write requests includes a revised encoded data slice of the set of revised encoded data slices when the write conflict does not exist.

8. The DSN of claim 7 further comprises:

the second module functions to generate the write revision response to include a list of revision numbers that corresponds to a number of revised encoded data slices having the slice name that the one of the storage units is storing; and

the third module functions to interpret the lists of revision numbers of the set of received write revision responses in view of the revision number by:

comparing a most recent revision number of the lists of revision numbers to the revision number; and

when at least a decode threshold number of the lists of revision numbers compare favorably to the revision number, indicating that the write conflict does not exist.

9. The DSN of claim 7 further comprises:

the second module functions to generate the write revision response to include a most recent revision number corresponding to a most recently stored one of the respective revised encoded data slices; and

the third module functions to interpret most recent revision numbers of the set of received write revision responses in view of the revision number and when at least a decode threshold number of the most recent revision numbers compare favorably to the revision number, indicating that the write conflict does not exist.

10. The DSN of claim 7 further comprises:

the second module functions to generate the write revision response to include a favorable or unfavorable revision number indication; and

the third module functions to interpret the set of received write revision responses by indicating that the write conflict does not exist when at least a decode threshold number of favorable revision number indications were received.

11. The DSN of claim 10 further comprises:

the second module further functions to:

compare a most recent revision number corresponding to a most recently stored one of the respective revised encoded data slices to the revision number;

indicate the favorable revision number indication when the most recent revision number is less than the revision number; and

indicate the unfavorable revision number indication when the most recent revision number is greater than or equal to the revision number.

12. The DSN of claim 7 further comprises:

the second module further functions to:

lock the slice name for a corresponding one of the set of write revision requests; and

while the slice name is locked for the corresponding one of the set of write revision requests:

receive, from a second device of the DSN, a second write revision request regarding the slice name; and

send a write error message to the second device.

13. A processing system of a dispersed storage network (DSN) comprises:

at least one processor;

a memory that stores operational instructions, that when executed by the at least one processor cause the processing system to:

send, by a first device of the DSN, a set of write revision requests to storage units of the DSN, wherein a write revision request of the set of write revision requests includes a slice name and a revision number corresponding to a revision level of a set of revised encoded data slices, wherein the set of write revision requests does not include the set of revised encoded data slices;

generate, by one of the storage units, a write revision response regarding a potential write conflict based on the revision number;

receive, by the first device, write revision responses from at least some of the storage units to produce a set of received write revision responses;

interpret, by the first device, the set of received write revision responses to determine whether a write conflict exists;

when the write conflict exists, abort, by the first device, a write function regarding storage of the set of revised encoded data slices by the storage units without sending the set of revised encoded data slices to the storage units; and

when the write conflict does not exist, issue, by the first device, a set of write requests to the storage units regarding storing the set of revised encoded data slices, wherein each write request of the set of write requests includes a revised encoded data slice of the set of revised encoded data slices.

14. The processing system of claim 13 wherein the operational instructions, when executed by the at least one processor, further cause the processing system to:

generate, by the one of the storage units, the write revision response to include a list of revision numbers that corresponds to a number of revised encoded data slices having the slice name that the one of the storage units is storing; and

interpret, by the first device, the lists of revision numbers of the set of received write revision responses in view of the revision number by:

comparing a most recent revision number of the lists of revision numbers to the revision number; and

when at least a decode threshold number of the lists of revision numbers compare favorably to the revision number, indicating that the write conflict does not exist.

15. The processing system of claim 13 wherein the operational instructions, when executed by the at least one processor, further cause the processing system to:

generate, by the one of the storage units, the write revision response to include a most recent revision number corresponding to a most recently stored one of the respective revised encoded data slices; and

interpret, by the first device, most recent revision numbers of the set of received write revision responses in view of the revision number and when at least a decode threshold number of the most recent revision numbers compare favorably to the revision number, indicating that the write conflict does not exist.

16. The processing system of claim 13 wherein the operational instructions, when executed by the at least one processor, further cause the processing system to:

generate, by the one of the storage units, the write revision response to include a favorable or unfavorable revision number indication; and

interpret, by the first device, the set of received write revision responses by indicating that the write conflict does not exist when at least a decode threshold number of favorable revision number indications were received.

17. The processing system of claim 16 wherein the operational instructions, when executed by the at least one processor, further cause the processing system to:

compare, by the one of the storage units, a most recent revision number corresponding to a most recently stored one of the respective revised encoded data slices to the revision number;

when the most recent revision number is less than the revision number, indicate, by the one of the storage units, the favorable revision number indication; and

when the most recent revision number is greater than or equal to the revision number, indicate, by the one of the storage units, the unfavorable revision number indication.

18. The processing system of claim 13 wherein the operational instructions, when executed by the at least one processor, further cause the processing system to:

lock, by the one of the storage units, the slice name for a corresponding one of the set of write revision requests; and

while the slice name is locked for the corresponding one of the set of write revision requests:

receive, by the one of the storage units from a second device of the DSN, a second write revision request regarding the slice name; and

send, by the one of the storage units, a write error message to the second device.

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 Jan 19, 2017
From: CLEVERSAFE, INC.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 041410/0801 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2017
From: BAPTIST, ANDREW; DHUSE, GREG; VOLVOVSKI, ILYA
To: CLEVERSAFE, INC.
Reel/Frame 040986/0136 →
Continuity (3)
Continuation 13959702 · Aug 5, 2013
Provisional Application 61700691 · Sep 13, 2012
Related Publication 20160335030A1 · Nov 17, 2016