IP Library Granted Patent US 10,452,545
Granted Patent B1
US 10,452,545 · App. 15/727,244 · Granted Oct 22, 2019

Systems and methods for maintaining cache coherency

Inventors: Jitendra Patidar (Pune, IN); Anindya Banerjee (Pune, IN); Kundan Kumar (Pune, IN)
Assignee: Veritas Technologies LLC
G06F12/0815G06F12/0866G06F12/084G06F12/0875
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,452,545
App. No.
15/727,244
Granted
Oct 22, 2019
Kind
B1
Abstract

The disclosed computer-implemented method for maintaining cache coherency may include (1) receiving an indication of a revocation of a grant to an owner node of a shared lock for a data object owned by the owner node; (2) invalidating, in response to the indication of the revocation, a copy of the object in a local cache of the owner node; (3) receiving, while the requesting node holds a grant of an exclusive lock, a request from the requesting node to update the object in the local cache; (4) transmitting, in response to the request to update the object, a request for a shared lock for the object; (5) receiving an indication of a grant of the shared lock; and (6) updating, in response to the grant of the shared lock, the object in the local cache. Various other methods, systems, and computer-readable media are also disclosed.

Claims (57)

1. A computer-implemented method for maintaining cache coherency, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

receiving, by an owner node of a plurality of nodes of a clustered storage system, an indication of a revocation of a grant to the owner node of a shared lock for a data object owned by the owner node;

invalidating, by the owner node in response to the indication of the revocation of the grant to the owner node of the shared lock, a copy of the data object in a local cache of the owner node;

receiving, by the owner node while a first requesting node of the plurality of nodes holds a grant of an exclusive lock, a request from the first requesting node to update the data object in the local cache and a first validation cookie for the request from the first requesting node;

receiving, by the owner node while a second requesting node of the plurality of nodes holds a grant of the exclusive lock, a request from the second requesting node to update the data object in the local cache and a second validation cookie for the request from the second requesting node;

transmitting, by the owner node in response to one of the requests to update the data object, a non-preferred request for a shared lock for the data object;

receiving, by the owner node, an indication of a grant of the shared lock to the owner node and a third validation cookie, wherein the grant of the shared lock occurs after grants of preceding requests for a lock for the data object;

determining, by the owner node, whether the third validation cookie matches the first validation cookie or the second validation cookie; and

updating, by the owner node in response to the grant of the shared lock, the data object in the local cache based on determining whether the third validation cookie matches the first validation cookie or the second validation cookie.

2. The computer-implemented method of claim 1 , wherein the updating of the data object in the local cache comprises populating the data object in the local cache with data received in one of the requests to update the data object.

3. The computer-implemented method of claim 1 , further comprising:

receiving, by the owner node from a third requesting node of the plurality of nodes, a request to read the data object; and

transmitting, by the owner node to the third requesting node in response to the request to read the data object, the data object from the local cache of the owner node to the third requesting node.

4. The computer-implemented method of claim 1 , wherein the local cache of the owner node is located on a solid-state drive of the owner node.

5. The computer-implemented method of claim 1 , wherein updating the data object comprises:

populating, by the owner node in response to the grant of the shared lock to the owner node, the data object in the local cache of the owner node with data received in the request from the first requesting node based on the third validation cookie matching the first validation cookie.

6. The computer-implemented method of claim 1 , wherein updating the data object comprises:

populating, by the owner node in response to the grant of the shared lock to the owner node, the data object in the local cache of the owner node with data received in the request from the second requesting node based on the third validation cookie matching the second validation cookie.

7. The computer-implemented method of claim 1 , wherein invalidating the copy of the data object in the local cache of the owner node occurs concurrently with invalidating a copy of the data object in a local cache of at least one other node of the plurality of nodes.

8. The computer-implemented method of claim 1 , wherein receiving the request from the first requesting node to update the data object in the local cache comprises storing, by the owner node, data in the request from the first requesting node to update the data object to an in-memory cache of the owner node that is separate from the local cache of the owner node.

9. The computer-implemented method of claim 1 , wherein the grant to the first requesting node of the exclusive lock for the data object is responsive to a request by the first requesting node for the grant of the exclusive lock after receiving a write request for the data object from a client computer system.

10. The computer-implemented method of claim 1 , wherein the grant to the first requesting node of the exclusive lock for the data object causes an initiation of an update operation of the data object by the first requesting node to a backend storage system accessible by the owner node.

11. A system for maintaining cache coherency, the system comprising:

a lock communication module, stored in memory, that receives an indication of a revocation of a grant to an owner node of a plurality of nodes of a clustered storage system of a shared lock for a data object owned by the owner node;

a local cache control module, stored in memory, that invalidates, in response to the indication of the revocation of the grant to the owner node of the shared lock, a copy of the data object in a local cache of the owner node; and

a node communication module, stored in memory, that:

receives, while a first requesting node of the plurality of nodes holds a grant of an exclusive lock, a request from the first requesting node to update the data object in the local cache and a first validation cookie for the request from the first requesting node; and

receiving, while a second requesting node of the plurality of nodes holds a grant of the exclusive lock, a request from the second requesting node to update the data object in the local cache and a second validation cookie for the request from the second requesting node;

wherein the lock communication module transmits, in response to one of the requests to update the data object, a non-preferred request for a shared lock for the data object;

wherein the lock communication module receives an indication of a grant of the shared lock to the owner node and a third validation cookie, wherein the grant of the shared lock occurs after grants of preceding requests for a lock for the data object; and

wherein the local cache control module:

determines whether the third validation cookie matches the first validation cookie or the second validation cookie; and

updates, in response to the grant of the shared lock, the data object in the local cache based on determining whether the third validation cookies matches the first validation cookie or the second validation cookie; and

at least one physical processor that executes the lock communication module, the local cache control module, and the node communication module.

12. The system of claim 11 , wherein the local cache control module updates the data object in the local cache by populating the data object in the local cache with data received in one of the requests to update the data object.

13. The system of claim 11 , wherein the node communication module:

receives, from a third requesting node of the plurality of nodes, a request to read the data object; and

transmits, to the third requesting node in response to the request to read the data object, the data object from the local cache of the owner node to the third requesting node.

14. The system of claim 11 , wherein the local cache control module updates the data object by populating, in response to the grant of the shared lock to the owner node, the data object in the local cache of the owner node with data received in the request from the first requesting node based on the third validation cookie matching the first validation cookie.

15. The system of claim 11 , wherein the local cache control module updates the data object by populating, in response to the grant of the shared lock to the owner node, the data object in the local cache of the owner node with data received in the request from the second requesting node based on the third validation cookie matching the second validation cookie.

16. A non-transitory computer-readable medium comprising one or more computer-executable instructions that, when executed by at least one processor of a computing device, cause the computing device to:

receive an indication of a revocation of a grant to an owner node of a plurality of nodes of a clustered storage system of a shared lock for a data object owned by the owner node;

invalidate, in response to the indication of the revocation of the grant to the owner node of the shared lock, a copy of the data object in a local cache of the owner node;

receive, while a first requesting node of the plurality of nodes holds a grant of an exclusive lock, a request from the first requesting node to update the data object in the local cache and a first validation cookie for the request from the first requesting node;

receive, while a second requesting node of the plurality of nodes holds a grant of the exclusive lock, a request from the second requesting node to update the data object in the local cache and a second validation cookie for the request from the second requesting node;

transmit, in response to one of the requests to update the data object, a non-preferred request for a shared lock for the data object;

receive an indication of a grant of the shared lock to the owner node and a third validation cookie, wherein the grant of the shared lock occurs after grants of preceding requests for a lock for the data object;

determine whether the third validation cookie matches the first validation cookie or the second validation cookie; and

update, in response to the grant of the shared lock, the data object in the local cache based on determining whether the third validation cookie matches the first validation cookie or the second validation cookie.

17. The non-transitory computer-readable medium of claim 16 , wherein updating the data object in the local cache comprises populating the data object in the local cache with data received in one of the requests to update the data object.

18. The non-transitory computer-readable medium of claim 16 , wherein the one or more computer-executable instructions further cause the computing device to:

receive, from a third requesting node of the plurality of nodes, a request to read the data object; and

transmitting, to the third requesting node in response to the request to read the data object, the data object from the local cache of the owner node to the third requesting node.

19. The non-transitory computer-readable medium of claim 16 , wherein updating the data object comprises:

populating, in response to the grant of the shared lock to the owner node, the data object in the local cache of the owner node with data received in the request from the first requesting node based on the third validation cookie matching the first validation cookie.

20. The non-transitory computer-readable medium of claim 16 , wherein updating the data object comprises:

populating, in response to the grant of the shared lock to the owner node, the data object in the local cache of the owner node with data received in the request from the second requesting node based on the third validation cookie matching the second validation cookie.

Assignments (15)
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 13, 2024
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 069574/0938 →
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 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 052426/0001 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 054535/0565 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS AT R/F 051594/0529 Recorded Nov 30, 2020
From: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 054535/0412 →
SECURITY INTEREST Recorded Aug 20, 2020
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS NOTES COLLATERAL AGENT
Reel/Frame 054370/0134 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Apr 16, 2020
From: VERITAS TECHNOLOGIES, LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 052426/0001 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Aug 2, 2019
From: VERITAS TECHNOLOGIES LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 051594/0529 →
PATENT SECURITY AGREEMENT SUPPLEMENT Recorded Dec 4, 2017
From: VERITAS TECHNOLOGIES LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 044682/0967 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 6, 2017
From: PATIDAR, JITENDRA; BANERJEE, ANINDYA; KUMAR, KUNDAN
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 043807/0727 →