IP Library › Granted Patent US 9,311,242
Granted Patent B1
US 9,311,242 · App. 13/743,904 · Granted Apr 12, 2016

Systems and methods for enabling write-back-cache aware snapshot creation

Inventor: Anindya Banerjee (West Bengal, IN)
Assignee: Symantec Corporation
G06F12/0815G06F3/065G06F11/1402G06F12/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,311,242
App. No.
13/743,904
Granted
Apr 12, 2016
Kind
B1
Abstract

A computer-implemented method for enabling write-back-cache aware snapshot creation may include (1) identifying a cache that implements write-back caching to selectively store at least one write to a backing store, (2) receiving, while the write is stored within the cache, a request to create a snapshot of the backing store, and (3) creating, in response to the request, the snapshot of the backing store by (a) determining that the write is stored within the cache and (b) tracking, in response to the determination, the write stored within the cache to ensure that the write is included in the snapshot of the backing store. Various other methods, systems, and computer-readable media are also disclosed.

Claims (87)

1. A computer-implemented method for enabling write-back-cache aware snapshot creation, at least a portion of the method being performed by a computing device comprising at least one processor, the method comprising:

identifying a cache that implements write-back caching to selectively store at least one write to a backing store;

receiving, while the write is stored within the cache, a request to create a snapshot of the backing store, where the write is to be included in the snapshot of the backing store;

creating, in response to the request and while the write is still stored within the cache, the snapshot of the backing store by:

determining that the write is stored within the cache;

tracking the write while the write is still stored within the cache and while the snapshot is accessible to ensure that the write is included in the snapshot of the backing store;

providing read access to the snapshot without first flushing the write to the backing store by receiving, while the write is stored within the cache, a request to read from the snapshot;

satisfying the request to read from the snapshot.

2. The method of claim 1 , wherein:

the write to the backing store is destined for a block of the backing store;

tracking the write while the write is still stored within the cache comprises tracking the block of the backing store to which the write is destined.

3. The method of claim 2 , wherein providing read access to the snapshot without first flushing the write to the backing store further comprises:

detecting a subsequent write to the backing store;

determining, in response to the detection, that the subsequent write to the backing store is destined for the block of the backing store;

flushing, in response to the determination that the subsequent write to the backing store is destined for the block of the backing store, the write from the cache to the snapshot of the backing store.

4. The method of claim 2 , wherein providing read access to the snapshot without first flushing the write to the backing store comprises:

detecting a subsequent request to read from a block of the snapshot;

determining that the block of the snapshot is associated with the block of the backing store;

flushing, prior to satisfying the request to read from the block of the snapshot, the write from the cache to the snapshot of the backing store.

5. The method of claim 2 , wherein providing read access to the snapshot without first flushing the write to the backing store comprises:

detecting a subsequent request to read from a block of the snapshot;

determining that the block of the snapshot is associated with the block of the backing store;

satisfying, while the write is stored within the cache, the request to read from the block of the snapshot with the write stored within the cache.

6. The method of claim 1 , wherein:

tracking the write while the write is still stored within the cache comprises detecting a request to flush the write from the cache to the backing store;

providing read access to the snapshot without first flushing the write to the backing store further comprises flushing, in response to the detection, the write from the cache to the snapshot of the backing store.

7. The method of claim 1 , wherein tracking the write while the write is still stored within the cache comprises:

identifying a cache abstraction layer that manages the cache;

causing the cache abstraction layer to flush the write from the cache to the snapshot of the backing store.

8. The method of claim 7 , wherein causing the cache abstraction layer to flush the write from the cache to the snapshot of the backing store comprises:

identifying a log used by the cache abstraction layer to manage writes stored within the cache;

adding a marker to the log that indicates that the write should be flushed from the cache to the snapshot of the backing store.

9. The method of claim 1 , wherein:

the write to the backing store is destined for a block of the backing store;

tracking the write while the write is still stored within the cache comprises:

maintaining a list of cached blocks of the backing store that includes blocks of the backing store that are cached; and

using the list of cached blocks of the backing store to ensure that the writes stored within the cache and associated with the blocks of the backing store that are cached are included in the snapshot of the backing store.

10. The method of claim 9 , wherein tracking the write while the write is still stored within the cache further comprises:

detecting that the write is no longer stored within the cache;

updating the list of cached blocks of the backing store to reflect that the write is no longer stored within the cache.

11. A system for enabling write-back-cache aware snapshot creation, the system comprising:

a cache-identifying module programmed to identify a cache that implements write-back caching to selectively store at least one write to a backing store;

a request-receiving module programmed to receive, while the write is stored within the cache, a request to create a snapshot of the backing store, where the write is to be included in the snapshot of the backing store;

a snapshot-creating module programmed to:

create, in response to the request and while the write is still stored within the cache, the snapshot of the backing store by:

determining that the write is stored within the cache;

tracking, the write while the write is still stored within the cache and while the snapshot is accessible to ensure that the write is included in the snapshot of the backing store;

provide read access to the snapshot without first flushing the write to the backing store by receiving, while the write is stored within the cache, a request to read from the snapshot;

satisfy the request to read from the snapshot;

at least one processor configured to execute the cache-identifying module, the request-receiving module, and the snapshot-creating module.

12. The system of claim 11 , wherein:

the write to the backing store is destined for a block of the backing store;

the snapshot-creating module is programmed to track the write stored within the cache by tracking the block of the backing store to which the write is destined.

13. The system of claim 12 , wherein the snapshot-creating module is further programmed to provide read access to the snapshot without first flushing the write to the backing store by:

detecting a subsequent write to the backing store;

determining, in response to the detection, that the subsequent write to the backing store is destined for the block of the backing store;

flushing, in response to the determination that the subsequent write to the backing store is destined for the block of the backing store, the write from the cache to the snapshot of the backing store.

14. The system of claim 12 , wherein the snapshot-creating module is programmed to provide read access to the snapshot without first flushing the write to the backing store by:

detecting a subsequent request to read from a block of the snapshot;

determining that the block of the snapshot is associated with the block of the backing store;

flushing, prior to satisfying the request to read from the block of the snapshot, the write from the cache to the snapshot of the backing store.

15. The system of claim 12 , wherein the snapshot-creating module is programmed to provide read access to the snapshot without first flushing the write to the backing store by:

detecting a subsequent request to read from a block of the snapshot;

determining that the block of the snapshot is associated with the block of the backing store;

satisfying, while the write is stored within the cache, the request to read from the block of the snapshot with the write stored within the cache.

16. The system of claim 11 , wherein the snapshot-creating module is programmed to:

track the write stored within the cache by detecting a request to flush the write from the cache to the backing store;

provide read access to the snapshot of the backing store by flushing, in response to the detection, the write from the cache to the snapshot of the backing store.

17. The system of claim 11 , wherein the snapshot-creating module is programmed to track the write while the write is still stored within the cache by:

identifying a cache abstraction layer that manages the cache;

causing the cache abstraction layer to flush the write from the cache to the snapshot of the backing store.

18. The system of claim 17 , wherein the snapshot-creating module is programmed to cause the cache abstraction layer to flush the write from the cache to the snapshot of the backing store by:

identifying a log used by the cache abstraction layer to manage writes stored within the cache;

adding a marker to the log that indicates that the write should be flushed from the cache to the snapshot of the backing store.

19. The system of claim 11 , wherein:

the write to the backing store is destined for a block of the backing store;

the snapshot-creating module is further programmed to track the write while the write is still stored within the cache by:

maintaining a list of cached blocks of the backing store that includes blocks of the backing store that are cached; and

using the list of cached blocks of the backing store to ensure that the writes stored within the cache and associated with the blocks of the backing store that are cached are included in the snapshot of the backing store.

20. 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:

identify a cache that implements write-back caching to selectively store at least one write to a backing store;

receive, while the write is stored within the cache, a request to create a snapshot of the backing store, where the write is to be included in the snapshot of the backing store;

create, in response to the request and while the write is still stored within the cache, the snapshot of the backing store by:

determining that the write is stored within the cache;

tracking the write while the write is still stored within the cache and while the snapshot is accessible to ensure that the write is included in the snapshot of the backing store;

provide read access to the snapshot without first flushing the write to the backing store by receiving, while the write is stored within the cache, a request to read from the snapshot;

satisfy the request to read from the snapshot.

Assignments (15)
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING PARTY DATA AND CORRECT THE PATENT NUMBERS PREVIOUSLY RECORDED AT REEL: 69548 FRAME: 468. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Feb 4, 2026
From: VERITAS TECHNOLOGIES LLC
To: ARCTERA US LLC
Reel/Frame 074876/0584 →
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 →
SECURITY INTEREST Recorded Mar 17, 2025
From: ARCTERA US LLC
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 070530/0497 →
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 →
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 Jan 17, 2013
From: BANERJEE, ANINDYA
To: SYMANTEC CORPORATION
Reel/Frame 029650/0847 →