IP Library Granted Patent US 10,678,638
Granted Patent B2
US 10,678,638 · App. 16/145,305 · Granted Jun 9, 2020

Resolving write conflicts in a dispersed storage network

Inventors: Zachary J. Mark (Chicago, IL); Ilya Volvovski (Chicago, IL); Greg R. Dhuse (Chicago, IL)
Assignee: PURE STORAGE, INC.
G06F11/1076G06F3/064G06F3/067G06F3/0619G06F11/1092G06F16/2237G06F16/2336G06F16/278G06F16/86G06F16/951H03M13/2906H03M13/3761G06F2211/1028H03M13/1515
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,678,638
App. No.
16/145,305
Granted
Jun 9, 2020
Kind
B2
Abstract

A method for execution by a dispersed storage and task (DST) execution unit includes receiving a write slice request from a requesting entity, where the write slice request includes a plurality of encoded data slices and a corresponding plurality of slice names. The plurality of slice names are interpreted to produce a slice name range. Whether a write lock conflict exists is determined based on the slice name range. An unfavorable write slice response is issued to the requesting entity when the write lock conflict is determined to exist. When the write lock conflict is determined to not exist, local storage of the plurality of encoded data slices is initiated, a favorable write slice response is issued to the requesting entity, and the processing system indicates that the slice name range is not locked when completing the local storage of the plurality of encoded data slices.

Claims (61)

1. A method for execution by a dispersed storage and task (DST) execution unit that includes a processor, the method comprises:

receiving a write slice request from a requesting entity, wherein the write slice request includes a plurality of encoded data slices and a corresponding plurality of slice names;

interpreting the plurality of slice names to produce a slice name range;

determining whether a write lock conflict exists based on the slice name range;

issuing an unfavorable write slice response to the requesting entity when the write lock conflict is determined to exist;

when the write lock conflict is determined to not exist:

initiating local storage of the plurality of encoded data slices;

issuing a favorable write slice response to the requesting entity; and

indicating that the slice name range is not locked when completing the local storage of the plurality of encoded data slices.

2. The method of claim 1 , wherein the plurality of encoded data slices are associated with at least one data segment, and wherein the at least one data segment was dispersed storage error encoded to produce the plurality of encoded data slices for storage in a set of storage units that includes the DST execution unit.

3. The method of claim 1 , further comprising indicating that the slice name range is locked prior to initiating local storage of the plurality of encoded data slices.

4. The method of claim 1 , wherein producing the slice name range includes identifying a lowest slice name and a high slice name of the corresponding plurality of slice names to produce the slice name range.

5. The method of claim 1 , wherein determining whether a write lock conflict exists includes retrieving at least one locked slice name range corresponding to at least one currently active write lock, and further includes comparing the slice name range to the at least one locked slice name range.

6. The method of claim 5 , wherein the at least one locked slice name range is retrieved from a locked slice name range list stored in local memory, and wherein indicating that the slice name range is not locked includes updating the locked slice name range list stored in local memory.

7. The method of claim 5 , wherein a plurality of locked slice name ranges corresponding to a plurality of currently active write locks are retrieved, wherein the plurality of currently active write locks correspond to a plurality of write slice requests received from a plurality of requesting entities, and wherein an intersection of the plurality of locked slice name ranges is null.

8. The method of claim 5 , wherein the write lock conflict is determined to exist in response to determining that an intersection between the slice name range and the at least one locked slice name range is non-null.

9. The method of claim 8 , wherein the intersection between the slice name range and the at least one locked slice name range is a proper subset of the slice name range and is a proper subset of the at least one locked slice name range.

10. The method of claim 8 , further comprising, when the write lock conflict is determined to exist:

queuing the write slice request in local memory;

determining the intersection between the slice name range and the at least one locked slice name range is null, wherein the intersection between the slice name range and the at least one locked slice name range becomes null in response to a set of slice names included in the intersection changing from a status of locked to not locked;

initiating local storage of the plurality of encoded data slices;

issuing a favorable write slice response to the requesting entity; and

indicating that the slice name range is not locked when completing the local storage of the plurality of encoded data slices.

11. The method of claim 1 , further comprising:

receiving a second write slice request from a second requesting entity, wherein the second write slice request is received prior to receiving the write slice request from the requesting entity, wherein the second write slice request includes a second plurality of encoded data slices and a second corresponding plurality of slice names, and wherein the write lock conflict is determined to not exist in response to determining an intersection between the slice name range and a second slice name range determined for the second plurality of encoded data slices is null; and

facilitating local storage of the second plurality of encoded data slices, wherein the local storage of the second plurality of encoded data slices is initiated prior to initiation of the local storage of the plurality of encoded data slices, and wherein the local storage of the second plurality of encoded data slices is completed after initiation of the local storage of the plurality of encoded data slices.

12. A processing system of a dispersed storage and task (DST) execution unit 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:

receive a write slice request from a requesting entity, wherein the write slice request includes a plurality of encoded data slices and a corresponding plurality of slice names;

interpret the plurality of slice names to produce a slice name range;

determine whether a write lock conflict exists based on the slice name range;

issue an unfavorable write slice response to the requesting entity when the write lock conflict is determined to exist;

when the write lock conflict is determined to not exist:

initiate local storage of the plurality of encoded data slices;

issue a favorable write slice response to the requesting entity; and

indicate that the slice name range is not locked when completing the local storage of the plurality of encoded data slices.

13. The processing system of claim 12 , wherein the plurality of encoded data slices are associated with at least one data segment, and wherein the at least one data segment was dispersed storage error encoded to produce the plurality of encoded data slices for storage in a set of storage units that includes the DST execution unit.

14. The processing system of claim 12 , wherein the operational instructions, when executed by the at least one processor, further cause the processing system to indicate that the slice name range is locked prior to initiating local storage of the plurality of encoded data slices.

15. The processing system of claim 12 , wherein determining whether a write lock conflict exists includes retrieving at least one locked slice name range corresponding to at least one currently active write lock, and further includes comparing the slice name range to the at least one locked slice name range.

16. The processing system of claim 15 , wherein the at least one locked slice name range is retrieved from a locked slice name range list stored in local memory, and wherein indicating that the slice name range is not locked includes updating the locked slice name range list stored in local memory.

17. The processing system of claim 15 , wherein the write lock conflict is determined to exist in response to determining that an intersection between the slice name range and the at least one locked slice name range is non-null.

18. The processing system of claim 17 , wherein the operational instructions, when executed by the at least one processor, further cause the processing system to, when the write lock conflict is determined to exist:

queue the write slice request in local memory;

determine the intersection between the slice name range and the at least one locked slice name range is null, wherein the intersection between the slice name range and the at least one locked slice name range becomes null in response to a set of slice names included in the intersection changing from a status of locked to not locked;

initiate local storage of the plurality of encoded data slices;

issue a favorable write slice response to the requesting entity; and

indicate that the slice name range is not locked when completing the local storage of the plurality of encoded data slices.

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

receive a second write slice request from a second requesting entity, wherein the second write slice request is received prior to receiving the write slice request from the requesting entity, wherein the second write slice request includes a second plurality of encoded data slices and a second corresponding plurality of slice names, and wherein the write lock conflict is determined to not exist in response to determining an intersection between the slice name range and a second slice name range determined for the second plurality of encoded data slices is null; and

facilitate local storage of the second plurality of encoded data slices, wherein the local storage of the second plurality of encoded data slices is initiated prior to initiation of the local storage of the plurality of encoded data slices, and wherein the local storage of the second plurality of encoded data slices is completed after initiation of the local storage of the plurality of encoded data slices.

20. A non-transitory computer storage medium comprises:

at least one memory section that stores operational instructions that, when executed by a processing system of a dispersed storage network (DSN) that includes a processor and a memory, causes the processing system to:

receive a write slice request from a requesting entity, wherein the write slice request includes a plurality of encoded data slices and a corresponding plurality of slice names;

interpret the plurality of slice names to produce a slice name range;

determine whether a write lock conflict exists based on the slice name range;

issue an unfavorable write slice response to the requesting entity when the write lock conflict is determined to exist;

when the write lock conflict is determined to not exist:

initiate local storage of the plurality of encoded data slices;

issue a favorable write slice response to the requesting entity; and

indicate that the slice name range is not locked when completing the local storage of the plurality of encoded data slices.

Assignments (5)
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 DELETE 15/174/279 AND 15/174/596 PROPERTY NUMBERS PREVIOUSLY RECORDED AT REEL: 49555 FRAME: 530. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jan 7, 2020
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 051495/0831 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 21, 2019
From: INTERNATIONAL BUSINESS MACHINES CORPORATION
To: PURE STORAGE, INC.
Reel/Frame 049555/0530 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 28, 2018
From: MARK, ZACHARY J.; VOLVOVSKI, ILYA; DHUSE, GREG R.
To: INTERNATIONAL BUSINESS MACHINES CORPORATION
Reel/Frame 047002/0084 →