IP Library Granted Patent US 10,496,538
Granted Patent B2
US 10,496,538 · App. 14/840,701 · Granted Dec 3, 2019

System, method and mechanism to efficiently coordinate cache sharing between cluster nodes operating on the same regions of a file or the file system blocks shared among multiple files

Inventors: Sanjay Jain (Pune, IN); Anindya Banerjee (Pune, IN); Shirish Vijayvargiya (Pune, IN); Abhishek Gupta (Jharkhand, IN)
Assignee: Veritas Technologies LLC
G06F12/0817G06F12/084G06F12/0813G06F2212/621
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,496,538
App. No.
14/840,701
Granted
Dec 3, 2019
Kind
B2
Abstract

Various systems, methods and apparatuses for coordinating the sharing of cache data between cluster nodes operating on the same data objects. One embodiment involves a first node in a cluster receiving a request for a data object, querying a global lock manager to determine if a second node in the cluster is the lock owner of the data object, receiving an indication identifying the second node as the lock owner and indicating that the data object is available in the second node's local cache, requesting the data object from the second node, and then receiving the data object from the second node's local cache. Other embodiments include determining whether the lock is a shared lock or an exclusive lock, and either pulling the data object from the local node of the second cache or receiving the data object that is pushed from the second node, as appropriate.

Claims (90)

1. A method, comprising:

receiving a request for a data object, wherein the request is received by a first node of a cluster of nodes;

querying a global lock manager to determine if a second node is a lock owner of the data object, wherein

the cluster of nodes comprises the second node,

the second node comprises a local cache, and

the first node and the second node are separate computing devices;

determining that the second node is the lock owner and that the data object is available in the local cache of the second node;

determining that a third node has a shared lock on the data object;

waiting for a third node to complete a pending operation on the data object pursuant to the shared lock;

after the third node has completed the pending operation, requesting the data object from the local cache of the second node;

in response to requesting the data object from the local cache of the second node, the data object is pushed to the first node from the local cache of the second node, wherein

the data object is pushed to the first node, from the local cache of the second node, after the second node completes one or more pending operations on the data object; and

subsequent to the second node receiving an acknowledgement from the first node, exclusively transferring an exclusive lock to the first node, wherein

the exclusive lock is transferred exclusively to the first node subsequent to the second node receiving the acknowledgement from the first node indicating that the first node has received the data object.

2. The method of claim 1 , further comprising:

prior to requesting the data object from the second node, determining whether the second node has an exclusive lock or a shared lock on the data object.

3. The method of claim 2 , further comprising:

sending the acknowledgment to the second node, wherein

the acknowledgment is sent in response to receiving the data object.

4. The method of claim 1 , further comprising:

receiving the exclusive lock associated with the data object, wherein

the receiving the exclusive lock is performed subsequent to the receiving the data object.

5. The method of claim 1 , further comprising:

subsequent to the requesting, receiving the data object from the local cache of the second node.

6. The method of claim 1 , further comprising:

a storage area network (“SAN”), wherein

the SAN is communicatively coupled the cluster via one or more networks,

the SAN comprises a plurality of storage devices,

a network storage device comprises a copy of the data object, and

the receiving the data object from the second node is more efficient than receiving the copy from the network storage device.

7. The method of claim 1 , where

the acknowledgement further indicates that the first node has received the data object without any errors.

8. A computer system comprising:

a processor; and

a memory coupled to the processor and configured to store instructions executable by the processor, the instructions configured to

receive a request for a data object, wherein

the request is received by a first node of a cluster of nodes;

query a global lock manager to determine if a second node is a lock owner of the data object, wherein

the cluster of nodes comprises the second node,

the second node comprises a local cache, and

the first node and the second node are separate computing devices;

determine that the second node is the lock owner and that the data object is available in the local cache of the second node;

determine that a third node has a shared lock on the data object;

wait for a third node to complete a pending operation on the data object pursuant to the shared lock;

after the third node has completed the pending operation, request the data object from the local cache of the second node;

in response to requesting the data object from the local cache of the second node, the data object is pushed to the first node from the local cache of the second node, wherein

the data object is pushed to the first node, from the local cache of the second node, after the second node completes one or more pending operations; and

subsequent to the second node receiving an acknowledgement from the first node, exclusively transferring an exclusive lock to the first node, wherein

the exclusive lock is transferred exclusively to the first node subsequent to the second node receiving the acknowledgement from the first node indicating that the first node has received the data object.

9. The computer system of claim 8 , wherein the instructions are further configured to:

prior to requesting the data object from the second node, determine whether the second node has an exclusive lock or a shared lock on the data object.

10. The computer system of claim 9 , wherein the instructions are further configured to:

send the acknowledgment to the second node, wherein

the acknowledgment is sent in response to receiving the data object.

11. The computer system of claim 8 , wherein the instructions are further configured to:

receive the exclusive lock associated with the data object, wherein

the receiving the exclusive lock is performed subsequent to receiving the data object.

12. The computer system of claim 8 , wherein the instructions are further configured to:

subsequent to requesting the data object from the local cache of the second node, receive the data object from the local cache of the second node.

13. The computer system of claim 8 , further comprising:

a storage area network (“SAN”), wherein

the SAN is communicatively coupled the cluster via one or more networks,

the SAN comprises a plurality of storage devices,

a network storage device comprises a copy of the data object, and

receiving the data object from the second node is more efficient than receiving the copy from the network storage device.

14. A non-transitory computer-readable storage medium configured to store program instructions that, when executed on a processor, are configured to cause the processor to perform a method comprising:

receiving a request for a data object, wherein

the request is received by a first node of a cluster of nodes;

querying a global lock manager to determine if a second node is a lock owner of the data object, wherein

the cluster of nodes comprises the second node,

the second node comprises a local cache, and

the first node and the second node are separate computing devices;

determining that the second node is the lock owner and that the data object is available in the local cache of the second node;

determining that a third node has a shared lock on the data object;

waiting for a third node to complete a pending operation on the data object pursuant to the shared lock;

after the third node has completed the pending operation, requesting the data object from the local cache of the second node;

in response to requesting the data object from the local cache of the second node, the data object is pushed to the first node from the local cache of the second node, wherein

the data object is pushed to the first node, from the local cache of the second node, after the second node completes one or more pending operations on the data object; and

subsequent to the second node receiving an acknowledgement from the first node, exclusively transferring an exclusive lock to the first node, wherein

the exclusive lock is transferred exclusively to the first node subsequent to the second node receiving the acknowledgement from the first node indicating that the first node has received the data object.

15. The non-transitory computer-readable storage medium of claim 14 , wherein the method further comprises:

prior to requesting the data object from the second node, determining whether the second node has an exclusive lock or a shared lock on the data object.

16. The non-transitory computer-readable storage medium of claim 15 , wherein the method further comprises:

sending the acknowledgment to the second node, wherein

the acknowledgment is sent in response to receiving the data object.

17. The non-transitory computer-readable storage medium of claim 14 , wherein the method further comprises:

receiving the exclusive lock associated with the data object, wherein

the receiving the exclusive lock is performed subsequent to the receiving the data object.

18. The non-transitory computer-readable storage medium of claim 14 , wherein the method further comprises:

subsequent to the requesting, receiving the data object from the local cache of the second node.

Assignments (16)
SECURITY INTEREST Recorded Dec 12, 2025
From: ARCTERA US LLC
To: CITIBANK, N.A., AS COLLATERAL AGENT
Reel/Frame 073951/0470 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 069585/0150 Recorded Dec 1, 2025
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0848 →
TERMINATION AND RELEASE OF PATENT SECURITY AGREEMENT AT R/F 070530/0497 Recorded Dec 1, 2025
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0730 →
RELEASE OF SECURITY INTEREST Recorded Dec 16, 2024
From: ACQUIOM AGENCY SERVICES LLC, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC (F/K/A VERITAS US IP HOLDINGS LLC)
Reel/Frame 069712/0090 →
RELEASE OF SECURITY INTEREST Recorded Dec 13, 2024
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069634/0584 →
PATENT SECURITY AGREEMENT Recorded Dec 10, 2024
From: ARCTERA US LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069585/0150 →
SECURITY INTEREST Recorded Dec 10, 2024
From: ARCTERA US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 069563/0243 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2024
From: VERITAS TECHNOLOGIES LLC
To: ARCTERA US LLC
Reel/Frame 069548/0468 →
ASSIGNMENT OF SECURITY INTEREST IN PATENT COLLATERAL Recorded Nov 25, 2024
From: BANK OF AMERICA, N.A., AS ASSIGNOR
To: ACQUIOM AGENCY SERVICES LLC, AS ASSIGNEE
Reel/Frame 069440/0084 →
TERMINATION AND RELEASE OF SECURITY IN PATENTS AT R/F 037891/0726 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS US IP HOLDINGS, LLC
Reel/Frame 054535/0814 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
MERGER Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038483/0203 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037891/0001 →
SECURITY INTEREST Recorded Feb 23, 2016
From: VERITAS US IP HOLDINGS LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037693/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 1, 2015
From: JAIN, SANJAY; BANERJEE, ANINDYA; VIJAYVARGIYA, SHIRISH; GUPTA, ABHISHEK
To: SYMANTEC CORPORATION
Reel/Frame 036467/0431 →