IP Library Granted Patent US 11,775,485
Granted Patent B2
US 11,775,485 · App. 17/240,729 · Granted Oct 3, 2023

Concurrent access and transactions in a distributed file system

Inventors: Mohit Aron (Saratoga, CA); Ganesha Shanmuganathan (San Jose, CA)
Assignee: Cohesity, Inc.
G06F16/1865G06F16/10G06F16/1767G06F16/182
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 11,775,485
App. No.
17/240,729
Granted
Oct 3, 2023
Kind
B2
Abstract

According to one embodiment of the present disclosure, a first set of file system objects included in performing a requested file system operation is identified in response to a request to perform a file system operation. An update intent corresponding to the requested file system operation is inserted into a data structure associated with each identified file system object. Each file system object corresponding to the corresponding data structure is modified as specified by the update intent in that data structure. After modifying the file system object corresponding to the corresponding data structure, the update intent is removed from that data structure.

Claims (49)

1. A method, comprising:

identifying a plurality of file system data structures to modify to perform a file system operation;

obtaining, by a computing node of a distributed file system, a corresponding node-level lock for each of the plurality of file system data structures;

obtaining, by the computing node of the distributed file system, a corresponding process-wide lock for each of the plurality of file system data structures; and

performing the file system operation, comprising:

determining that the file system operation corresponds to creating a file in a directory:

storing a first update intent in a first inode associated with the directory of a file system data structure of the plurality of file system data structures;

storing a second update intent in a second inode associated with the file after the storing of the first update intent; and

in the event that the second inode crashes after the first update intent is stored and before the second update intent is stored, determining that the file system operation has not been performed successfully.

2. The method of claim 1 , wherein the plurality of file system data structures are a plurality of inodes.

3. The method of claim 1 , further comprising receiving a request to perform the file system operation.

4. The method of claim 3 , wherein the request specifies a source directory, a destination directory, and a file handle.

5. The method of claim 1 , wherein obtaining the corresponding node-level lock for each of the plurality of file system data structures includes requesting, from a distributed lock service, the corresponding node-level lock for each of the plurality of file system data structures.

6. The method of claim 5 , wherein obtaining the corresponding node-level lock for each of the plurality of file system data structures further includes receiving from the distributed lock service, the corresponding node-level lock for each of the plurality of file system data structures.

7. The method of claim 5 , wherein obtaining the corresponding node-level lock for each of the plurality of file system data structures further includes waiting for the corresponding node-level lock for each of the plurality of file system data structures in the event at least one of the corresponding node-level lock for each of the plurality of file system data structures is being used by another computing node of the distributed file system.

8. The method of claim 1 , wherein obtaining the corresponding process-wide lock for each of the plurality of file system data structures includes requesting from a process-wide lock service the corresponding process-wide lock for each of the plurality of file system data structures.

9. The method of claim 1 , wherein performing the file system operation includes generating a corresponding update intent for each of the plurality of file system data structures.

10. The method of claim 9 , wherein performing the file system operation further includes storing the corresponding generated update intent into each of the plurality of file system data structures.

11. The method of claim 10 , wherein the corresponding generated update intent are stored into each of the plurality of file system data structures in a particular order.

12. The method of claim 10 , wherein performing the file system operation further includes modifying each of the plurality of file system data structures based on the corresponding generated update intent.

13. The method of claim 12 , wherein performing the file system operation further includes removing the corresponding generated update intent after modifying a file system data structure.

14. A computer program product embodied in a non-transitory computer readable medium and comprising computer instructions for:

identifying a plurality of file system data structures to modify to perform a file system operation;

obtaining, by a computing node of a distributed file system, a corresponding node-level lock for each of the plurality of file system data structures;

obtaining, by the computing node of the distributed file system, a corresponding process- wide lock for each of the plurality of file system data structures; and

performing the file system operation, comprising:

performing one or more of the following:

A) in the event that the file system operation corresponds to creating a first file in a first directory:

storing a first update intent in a first inode associated with the first directory of a file system data structure of the plurality of file system data structures;

storing a second update intent in a second inode associated with the first file after the storing of the first update intent; and

in the event that the second inode crashes after the first update intent is stored and before the second update intent is stored, determining that the file system operation has not been performed successfully; and/or

B) in the event that the file system operation corresponds to deleting a second file from a second directory:

storing a first update intent in a first inode associated with the second file;

storing a second update intent in a second inode associated with the second directory after the storing of the first update intent; and

in the event that the second inode crashes after the first update intent is stored and before the second update intent is stored, determining that the file system operation has not been performed successfully.

15. The computer program product of claim 14 , wherein the plurality of file system data structures are a plurality of inodes.

16. The computer program product of claim 14 , further comprising computer instructions for receiving a request to perform the file system operation.

17. The computer program product of claim 14 , wherein obtaining the corresponding node-level lock for each of the plurality of file system data structures includes requesting, from a distributed lock service, the corresponding node-level lock for each of the plurality of file system data structures.

18. The computer program product of claim 17 , wherein obtaining the corresponding node-level lock for each of the plurality of file system data structures further includes receiving from the distributed lock service, the corresponding node-level lock for each of the plurality of file system data structures.

19. The computer program product of claim 14 , wherein obtaining the corresponding node-level lock for each of the plurality of file system data structures further includes waiting for the corresponding node-level lock for each of the plurality of file system data structures in the event at least one of the corresponding node-level lock for each of the plurality of file system data structures is being used by another computing node of the distributed file system.

20. A method, comprising:

identifying a plurality of file system data structures to modify to perform a file system operation;

obtaining, by a computing node of a distributed file system, a corresponding node-level lock for each of the plurality of file system data structures;

obtaining, by the computing node of the distributed file system, a corresponding process-wide lock for each of the plurality of file system data structures; and

performing the file system operation, comprising:

determining that the file system operation corresponds to deleting a file from a directory:

storing a first update intent in a first inode associated with the file;

storing a second update intent in a second inode associated with the directory after the storing of the first update intent; and

in the event that the second inode crashes after the first update intent is stored and before the second update intent is stored, determining that the file system operation has not been performed successfully.

Assignments (4)
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Dec 10, 2024
From: FIRST-CITIZENS BANK & TRUST COMPANY (AS SUCCESSOR TO SILICON VALLEY BANK)
To: COHESITY, INC.
Reel/Frame 069584/0498 →
SECURITY INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC; COHESITY, INC.
To: JPMORGAN CHASE BANK. N.A.
Reel/Frame 069890/0001 →
SECURITY INTEREST Recorded Sep 23, 2022
From: COHESITY, INC.
To: SILICON VALLEY BANK, AS ADMINISTRATIVE AGENT
Reel/Frame 061509/0818 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 22, 2021
From: ARON, MOHIT; SHANMUGANATHAN, GANESHA
To: COHESITY, INC.
Reel/Frame 056950/0996 →
Continuity (4)
Continuation 16296707 · Mar 8, 2019
Continuation 15628484 · Jun 20, 2017
Continuation 14524979 · Oct 27, 2014
Related Publication 20210342312A1 · Nov 4, 2021