IP Library Granted Patent US 9,146,868
Granted Patent B1
US 9,146,868 · App. 13/743,800 · Granted Sep 29, 2015

Systems and methods for eliminating inconsistencies between backing stores and caches

Inventors: Mithlesh Thukral (Pune, IN); Mukesh Bafna (Pune, IN)
Assignee: Symantec Corporation
G06F12/0808G06F12/0804
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 9,146,868
App. No.
13/743,800
Granted
Sep 29, 2015
Kind
B1
Abstract

A computer-implemented method for eliminating inconsistencies between backing stores and caches may include (1) detecting at least one inconsistency between a backing store and a cache, (2) identifying a synchronization marker that bifurcates write operations queued in the cache into (i) a subset of one or more write operations known to have been successfully performed on the backing store and (ii) an additional subset of one or more additional write operations not yet known to have been successfully performed on the backing store, (3) identifying the additional subset of additional write operations based at least in part on the synchronization marker, (4) performing the additional subset of additional write operations on the backing store, and then (5) updating the synchronization marker based at least in part on performing the additional subset of additional write operations on the backing store. Various other methods, systems, and computer-readable media are also disclosed.

Claims (79)

1. A computer-implemented method for eliminating inconsistencies between backing stores and caches, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

superimposing a synchronization marker on at least one write operation in a cache that queues write operations destined for a backing store, the synchronization marker bifurcating the write operations queued in the cache into:

a subset of one or more write operations known to have been successfully performed on the backing store;

an additional subset of one or more additional write operations that are not yet known to have been successfully performed on the backing store;

superimposing a corresponding synchronization marker on copies, in the backing store, of write operations from the at least one write operation, the synchronization marker and the corresponding synchronization marker representing a most recent synchronization point between the backing store and the cache;

detecting at least one inconsistency between the backing store and the cache that queues write operations destined for the backing store;

in response to detecting the inconsistency between the backing store and the cache that queues the write operations destined for the backing store:

identifying the synchronization marker;

identifying the additional subset of additional write operations based at least in part on the synchronization marker that bifurcates the write operations queued in the cache;

in response to identifying the additional subset of additional write operations based at least in part on the synchronization marker:

performing the additional subset of additional write operations on the backing store in order to eliminate the inconsistency between the backing store and the cache;

updating the synchronization marker based at least in part on performing the additional subset of additional write operations on the backing store.

2. The method of claim 1 , wherein detecting the inconsistency between the backing store and the cache comprises detecting a failed attempt to perform a write operation on the backing store.

3. The method of claim 2 , wherein detecting the failed attempt to perform the write operation on the backing store comprises adding the write operation to the additional subset of additional write operations not yet known to have been successfully performed on the backing store.

4. The method of claim 1 , wherein detecting the inconsistency between the backing store and the cache comprises determining that the additional subset of additional write operations not yet known to have been successfully performed on the backing store has reached a predefined maximum number of write operations.

5. The method of claim 4 , wherein determining that the additional subset of additional write operations has reached the predefined maximum number of write operations comprises:

comparing the additional subset of additional write operations with the predefined maximum number of write operations on a periodic basis;

determining, based at least in part on the comparison, that the additional subset of additional write operations has reached the predefined maximum number of write operations.

6. The method of claim 1 , wherein identifying the synchronization marker that bifurcates the write operations queued in the cache comprises:

identifying the corresponding synchronization marker in the backing store;

locating the synchronization marker in the cache based at least in part on the corresponding synchronization marker identified in the backing store.

7. The method of claim 1 , further comprising, prior to performing the additional subset of additional write operations on the backing store:

detecting a read operation issued by an application using the backing store and the cache;

performing the read operation on the cache instead of the backing store in order to enable the application to avoid downtime resulting from the inconsistency between the backing store and the cache.

8. The method of claim 1 , wherein performing the additional subset of additional write operations on the backing store comprises:

determining that the inconsistency resulted from a temporary communication failure between the backing store and the cache;

determining that the temporary communication failure between the backing store and the cache has been resolved;

in response to determining that the temporary communication failure has been resolved, performing the additional subset of additional write operations on the backing store in order to eliminate the inconsistency between the backing store and the cache.

9. The method of claim 1 , wherein performing the additional subset of additional write operations on the backing store comprises:

determining that the inconsistency resulted from a permanent hardware failure on the backing store;

in response to determining that the inconsistency resulted from the permanent hardware failure on the backing store:

identifying a replica backing store configured to mirror the backing store;

synchronizing the replica backing store and the cache by performing the additional subset of additional write operations on the replica backing store;

replacing the backing store with the replica backing store such that the cache queues write operations destined for the replica backing store instead of queuing write operations destined for the backing store.

10. The method of claim 9 , wherein synchronizing the replica backing store and the cache comprises performing at least a portion of the subset of write operations on the replica backing store.

11. The method of claim 10 , wherein synchronizing the replica backing store and the cache comprises:

obtaining replica synchronization information from the replica backing store;

determining, based at least in part on the replica synchronization information, that the portion of the subset of write operations and the additional subset of additional write operations have not yet been performed on the replica backing store;

in response to determining that the portion of the subset of write operations and the additional subset of additional write operations have not yet been performed on the replica backing store:

performing the portion of the subset of write operations on the replica backing store;

performing all of the additional subset of additional write operations on the replica backing store.

12. The method of claim 1 , wherein updating the synchronization marker comprises modifying the synchronization marker to indicate that the additional subset of additional write operations have been successfully performed on the backing store.

13. A system for eliminating inconsistencies between backing stores and caches, the system comprising:

a synchronization module programmed to:

superimpose a synchronization marker on at least one write operation in a cache that queues write operations destined for a backing store, the synchronization marker bifurcating the write operations queued in the cache into:

a subset of one or more write operations known to have been successfully performed on the backing store;

an additional subset of one or more additional write operations that are not yet known to have been successfully performed on the backing store;

superimpose a corresponding synchronization marker on copies, in the backing store, of write operations from the at least one write operation, the synchronization marker and the corresponding synchronization marker representing a most recent synchronization point between the backing store and the cache;

a detection module programmed to detect at least one inconsistency between the backing store and the cache that queues write operations destined for the backing store;

an identification module programmed to:

identify the synchronization marker;

identify the additional subset of additional write operations based at least in part on the synchronization marker that bifurcates the write operations queued in the cache;

a performance module programmed to perform the additional subset of additional write operations on the backing store in order to eliminate the inconsistency between the backing store and the cache;

an update module programmed to update the synchronization marker based at least in part on the performance of the additional subset of additional write operations on the backing store;

at least one processor configured to execute the synchronization module, the detection module, the identification module, the performance module, and the update module.

14. The system of claim 13 , wherein the detection module is programmed to detect a failed attempt to perform a write operation on the backing store.

15. The system of claim 14 , further comprising an addition module programmed to add the write operation to the additional subset of additional write operations not yet known to have been successfully performed on the backing store.

16. The system of claim 13 , wherein the detection module is programmed to determine that the additional subset of additional write operations not yet known to have been successfully performed on the backing store has reached a predefined maximum number of write operations.

17. The system of claim 16 , wherein the detection module is programmed to:

compare the additional subset of additional write operations with the predefined maximum number of write operations on a periodic basis;

determine, based at least in part on the comparison, that the additional subset of additional write operations has reached the predefined maximum number of write operations.

18. The system of claim 13 , wherein the identification module is programmed to:

identify the corresponding synchronization marker in the backing store;

locate the synchronization marker in the cache based at least in part on the corresponding synchronization marker identified in the backing store.

19. The system of claim 13 , wherein:

the detection module is programmed to detect a read operation issued by an application using the backing store and the cache prior to the performance of the additional subset of additional write operations on the backing store;

the performance module is programmed to perform the read operation on the cache instead of the backing store in order to enable the application to avoid downtime resulting from the inconsistency between the backing store and the cache.

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

superimpose a synchronization marker on at least one write operation in a cache that queues write operations destined for a backing store, the synchronization marker bifurcating the write operations queued in the cache into:

a subset of one or more write operations known to have been successfully performed on the backing store;

an additional subset of one or more additional write operations that are not yet known to have been successfully performed on the backing store;

superimpose a corresponding synchronization marker on copies, in the backing store, of write operations from the at least one write operation, the synchronization marker and the corresponding synchronization marker representing a most recent synchronization point between the backing store and the cache;

detect at least one inconsistency between the backing store and the cache that queues write operations destined for the backing store;

in response to detecting the inconsistency between the backing store and the cache that queues the write operations destined for the backing store:

identify the synchronization marker;

identify the additional subset of additional write operations based at least in part on the synchronization marker that bifurcates the write operations queued in the cache;

in response to identifying the additional subset of additional write operations based at least in part on the synchronization marker:

perform the additional subset of additional write operations on the backing store in order to eliminate the inconsistency between the backing store and the cache;

update the synchronization marker based at least in part on performing the additional subset of additional write operations on the backing store.

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 070530/0497 Recorded Dec 1, 2025
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: ARCTERA US LLC
Reel/Frame 073833/0730 →
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 →
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 →
SECURITY INTEREST Recorded Dec 10, 2024
From: ARCTERA US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 069563/0243 →
PATENT SECURITY AGREEMENT Recorded Dec 10, 2024
From: ARCTERA US LLC
To: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 069585/0150 →
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 AND CHANGE OF NAME Recorded Apr 18, 2016
From: VERITAS US IP HOLDINGS LLC; VERITAS TECHNOLOGIES LLC
To: VERITAS TECHNOLOGIES LLC
Reel/Frame 038455/0752 →
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 037697/0412 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 17, 2013
From: THUKRAL, MITHLESH; BAFNA, MUKESH
To: SYMANTEC CORPORATION
Reel/Frame 029650/0263 →