IP Library Granted Patent US 10,684,992
Granted Patent B1
US 10,684,992 · App. 15/581,305 · Granted Jun 16, 2020

Causally ordering distributed file system events

Inventors: Raeanne Marks (Seattle, WA); Jonathan M. Walton (Seattle, WA); Ronald Steinke (Tacoma, WA); Karthik Palaiappan (Issaquah, WA); Tanuj Khurana (Mercer Island, WA); Steven Hubbell (Seattle, WA)
Assignee: EMC IP Holding Company LLC
G06F16/1734G06F16/182G06F16/1873G06F16/245
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,684,992
App. No.
15/581,305
Granted
Jun 16, 2020
Kind
B1
Abstract

Implementations are provided herein for using inode revision numbers associated with a modified LIN and a set of Parent LINs to causally order transactions within a distributed file system. Any time an inode is changed, its inode revision number can be incremented by 1. When events within file system are processed causing an inode or a set of inodes to be modified, an event transaction log entry can made. The event transaction log entry can denote a description of the event, a set of modified inode and inode revision number pairs, and a set of parent inode and inode revision number pairs. Entries in the event transaction log can be used to build an inode map for each inode implicated in the event transaction log. The inode map can be used to build a set of direct causal dependencies for each transaction in the event transaction log. The set of direct causal dependencies can be used to generate a causal ordering of the transactions in the event transaction log, that in some implementations, can be made available to external services.

Claims (48)

1. A method for ordering a set of events in a cluster of nodes operating as a distributed file system comprising:

maintaining an event transaction log, wherein entries in the event transaction log are associated with an event transaction log number, and wherein entries in the event transaction log contain at least one modified inode and inode revision number pair, and a set of parent inodes and parent inode revision number pairs;

generating an inode map wherein the inode map maps each inode referenced in the event transaction log to a set of inode revision numbers and a set of event transaction log numbers based on the event transaction log;

generating a set of direct causal dependencies for each event transaction log number based on the generated inode map; and

ordering the set of events based on the set of direct causal dependencies.

2. The method of claim 1 , wherein maintaining the event transaction log includes:

in response to processing an event associated with an event inode, wherein the event inode is associated with an event inode revision number:

incrementing the event inode revision number;

logging the event inode and the incremented event inode revision number into an event transaction log entry; and

adding a set of parent inodes and associated parent inode revision numbers to the event transaction log entry, wherein the set of parent inodes are based on the event inode.

3. The method of claim 1 , wherein at least two of the events in the set of events are processed in parallel on at least two different nodes among the cluster of nodes.

4. The method of claim 1 , wherein ordering the set of events is further based on applying a topological sort to the set of direct causal dependencies.

5. The method of claim 1 , wherein events in the set of events are based on changes to the metadata associated with at least one inode.

6. The method of claim 1 , further comprising:

assigning sequential transaction numbers to the ordered set of events; and

making available the sequential transaction numbers to other services.

7. A distributed file system comprising a cluster of nodes of nodes that have at least one storage device and at least one hardware processor configured to:

maintain an event transaction log for a set of events, wherein entries in the event transaction log are associated with an event transaction log number, and wherein entries in the event transaction log contain at least one modified inode and inode revision number pair, and a set of parent inodes and parent inode revision number pairs;

generate an inode map wherein the inode map maps each inode referenced in the event transaction log to a set of inode revision numbers and a set of event transaction log numbers based on the event transaction log;

generate a set of direct causal dependencies for each event transaction log number based on the generated inode map; and

order the set of events based on the set of direct causal dependencies.

8. The system of claim 7 , further configured to maintain the event transaction log by:

in response to processing an event associated with an event inode, wherein the event inode is associated with an event inode revision number:

incrementing the event inode revision number;

logging the event inode and the incremented event inode revision number into an event transaction log entry; and

adding a set of parent inodes and associated parent inode revision numbers to the event transaction log entry, wherein the set of parent inodes are based on the event inode.

9. The system of claim 7 , wherein at least two of the events in the set of events are processed in parallel on at least two different nodes among the cluster of nodes.

10. The system of claim 7 , wherein ordering the set of events is further based on applying a topological sort to the set of direct causal dependencies.

11. The system of claim 7 , wherein events in the set of events are based on changes to the metadata associated with at least one inode.

12. The system of claim 7 , further configured to:

assign sequential transaction numbers to the ordered set of events; and

make available the sequential transaction numbers to other services.

13. A non-transitory computer readable medium with program instructions stored thereon to perform the following acts:

maintaining an event transaction log, wherein entries in the event transaction log are associated with an event transaction log number, and wherein entries in the event transaction log contain at least one modified inode and inode revision number pair, and a set of parent inodes and parent inode revision number pairs;

generating an inode map wherein the inode map maps each inode referenced in the event transaction log to a set of inode revision numbers and a set of event transaction log numbers based on the event transaction log;

generating a set of direct causal dependencies for each event transaction log number based on the generated inode map; and

ordering the set of events based on the set of direct causal dependencies.

14. The non-transitory computer readable medium 13 , wherein maintaining the event transaction log further includes:

in response to processing an event associated with an event inode, wherein the event inode is associated with an event inode revision number:

incrementing the event inode revision number;

logging the event inode and the incremented event inode revision number into an event transaction log entry; and

adding a set of parent inodes and associated parent inode revision numbers to the event transaction log entry, wherein the set of parent inodes are based on the event inode.

15. The non-transitory computer readable medium 13 , wherein at least two of the events in the set of events are processed in parallel on at least two different nodes among a cluster of nodes.

16. The non-transitory computer readable medium 13 , wherein ordering the set of events is further based on applying a topological sort to the set of direct causal dependencies.

17. The non-transitory computer readable medium 13 , wherein events in the set of events are based on changes to the metadata associated with at least one inode.

18. The non-transitory computer readable medium of claim 13 , with program instructions stored thereon to further perform the following acts:

assigning sequential transaction numbers to the ordered set of events; and

making available the sequential transaction numbers to other services.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (042769/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 059803/0802 →
RELEASE OF SECURITY INTEREST AT REEL 042768 FRAME 0585 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058297/0536 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
PATENT SECURITY INTEREST (CREDIT) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 042768/0585 →
PATENT SECURITY INTEREST (NOTES) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 042769/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 18, 2017
From: MARKS, RAEANNE; WALTON, JONATHAN M.; STEINKE, RONALD; PALANIAPPAN, KARTHIK; KHURANA, TANUJ; HUBBELL, STEVEN
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 042429/0170 →
Cited By (1)
US 12,299,281