IP Library Granted Patent US 7,636,814
Granted Patent B1
US 7,636,814 · App. 11/117,268 · Granted Dec 22, 2009

System and method for asynchronous reads of old data blocks updated through a write-back cache

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 7,636,814
App. No.
11/117,268
Granted
Dec 22, 2009
Kind
B1
Abstract

A system for asynchronous reads of old data blocks updated through a write-back cache includes a storage device, a write-back cache, a storage consumer, a storage processing node, and device management software. The device management software may be configured to store a new version of a data block in the write-back cache in response to an update request from the first storage consumer and to then send an update completion notification to the first storage consumer. Some time after the update completion notification has been sent, the device management software may be configured to send a previous version of the updated data block to the storage processing node, where it may be required to perform an operation such as a copy-on write operation or a snapshot update.

Claims (53)

1. A system comprising:

a storage device;

a storage consumer configured to generate update requests to write data blocks to the storage device;

a write-back cache configured to temporarily store the data blocks in response to the update requests generated by the storage consumer;

a storage processing node; and

device management software stored on a storage medium and executable to communicate with the storage consumer and the write-back cache,

wherein the device management software is further executable to:

store a new version of a first data block of the storage device in the write-back cache in response to a first update request from the storage consumer, wherein the new version of the first data block is provided by the storage consumer;

send an update completion notification corresponding to the first update request to the storage consumer;

read a previous version of the first data block from the storage device and provide the previous version of the first data block to the storage processing node in response to a detection that the write-back cache has reached a first threshold level of dirty data blocks after the update completion notification has been sent to the storage consumer and before the new version of the first data block is stored in the storage device; and

overwrite the previous version of the first data block in the storage device with the new version of the first data block after the update completion notification has been sent to the storage consumer and after the previous version of the first data block is provided to the storage processing node.

2. The system as recited in claim 1 , wherein the write-back cache is a non-volatile write-back cache.

3. The system as recited in claim 1 , wherein the storage device is a file server.

4. The system as recited in claim 1 , wherein the storage device is a logical volume.

5. The system as recited in claim 1 , wherein the storage device is a physical disk.

6. The system as recited in claim 1 , wherein the storage device is a disk array.

7. The system as recited in claim 1 , wherein the storage device is an object storage device.

8. The system as recited in claim 1 , wherein the storage processing node is configured to store the previous version of the first data block as part of a copy-on-write (COW) operation.

9. The system as recited in claim 1 , wherein the storage processing node is configured to use the previous version of the first data block to maintain a snapshot of contents of the storage device.

10. The system as recited in claim 1 , wherein the device management software is executable to provide the previous version of the data block to the storage processing node in response to a request from the storage processing node.

11. The system as recited in claim 1 , wherein the first threshold level of dirty data blocks is specified by a first configuration parameter, and wherein the device management software is further executable to write dirty data blocks from the write-back cache to the storage device in response to the detection that the write-back cache has reached a first threshold level of dirty data blocks until a number of remaining dirty data blocks is reduced to a level specified by a second configuration parameter.

12. The system as recited in claim 1 , wherein the storage processing node is configured to implement RAID functionality whereby a new parity block is computed by performing an XOR operation on the previous version of the first data block, the new version of the first data block, and a previous version of the parity block.

13. A computer-accessible storage medium for use with a computer system including a storage device, a storage consumer configured to generate update requests to write data blocks to the storage device, a write-back cache configured to temporarily store the data blocks in response to the update requests generated by the storage consumer, and a storage processing node, wherein the storage medium stores program instructions executable to:

store a new version of a first data block of the storage device in the write-back cache in response to a first update request from the storage consumer, wherein the new version of the first data block is provided by the storage consumer;

send an update completion notification corresponding to the first update request to the storage consumer;

read a previous version of the first data block from the storage device and provide the previous version of the first data block to the storage processing node in response to a detection that the write-back cache has reached a first threshold level of dirty data blocks after the update completion notification has been sent to the storage consumer and before the new version of the first data block is stored in the storage device; and

overwrite the previous version of the first data block in the storage device with the new version of the first data block after the update completion notification has been sent to the storage consumer and after the previous version of the first data block is provided to the storage processing node.

14. The computer-accessible storage medium as recited in claim 13 , wherein the write-back cache is a non-volatile write-back cache.

15. The computer-accessible storage medium as recited in claim 13 , wherein the storage device is a file server.

16. The computer-accessible storage medium as recited in claim 13 , wherein the storage device is a logical volume.

17. The computer-accessible storage medium as recited in claim 13 , wherein the storage device is a physical disk.

18. The computer-accessible storage medium as recited in claim 13 , wherein the storage device is a disk array.

19. The computer-accessible storage medium as recited in claim 13 , wherein the storage device is an object storage device.

20. The computer-accessible storage medium as recited in claim 13 , wherein the storage processing node is configured to store the previous version of the first data block as part of a copy-on-write (COW) operation.

21. The computer-accessible storage medium as recited in claim 13 , wherein the storage processing node is configured to use the previous version of the first data block to maintain a snapshot of contents of the storage device.

22. The computer-accessible storage medium as recited in claim 13 , wherein the program instructions are executable to provide the previous version of the data block to the storage processing node in response to a request from the storage processing node.

23. The system as recited in claim 11 , wherein selected ones of the dirty data blocks are each associated with a special tag in the write-back cache to indicate particular handling is required prior to an overwrite, wherein the device management software is further executable to detect the special tag associated with each of the selected ones of the dirty data blocks and to responsively provide a previous version of each of the selected ones of the dirty data blocks to the storage processing node prior to writing each of the selected ones of the dirty data blocks to the storage device.

24. The computer-accessible storage medium as recited in claim 13 , wherein the first threshold level of dirty data blocks is specified by a first configuration parameter, and wherein the program instructions are further executable to write dirty data blocks from the write-back cache to the storage device in response to the detection that the write-back cache has reached a first threshold level of dirty data blocks until a number of remaining dirty data blocks is reduced to a level specified by a second configuration parameter.

25. A method for operating a computer system including a storage device, a storage consumer configured to generate update requests to write data blocks to the storage device, a write-back cache configured to temporarily store the data blocks in response to the update requests generated by the storage consumer, and a storage processing node, wherein the method comprises:

storing a new version of a first data block of the storage device in the write-back cache in response to a first update request from the storage consumer, wherein the new version of the first data block is provided by the storage consumer;

sending an update completion notification corresponding to the first update request to the storage consumer;

reading a previous version of the first data block from the storage device and providing the previous version of the first data block to the storage processing node in response to a detection that the write-back cache has reached a first threshold level of dirty data blocks after the update completion notification has been sent to the storage consumer and before the new version of the first data block is stored in the storage device; and

overwriting the previous version of the first data block in the storage device with the new version of the first data block after the update completion notification has been sent to the storage consumer and after the previous version of the first data block is provided to the storage processing node.

26. The method as recited in claim 25 , wherein the write-back cache is a non-volatile write-back cache.

27. The method as recited in claim 25 , wherein the storage device is a file server.

28. The method as recited in claim 25 , wherein the storage device is a logical volume.

29. The method as recited in claim 25 , wherein the storage device is a physical disk.

30. The method as recited in claim 25 , wherein the storage device is a disk array.

31. The method as recited in claim 25 , wherein the storage device is an object storage device.

32. The method as recited in claim 25 , wherein the storage processing node is configured to store the previous version of the first data block as part of a copy-on-write (COW) operation.

33. The method as recited in claim 25 , wherein the storage processing node is configured to use the previous version of the first data block to maintain a snapshot of contents of the storage device.

34. The method as recited in claim 25 , further comprising providing the previous version of the data block to the storage processing node in response to a request from the storage processing node.

35. The computer-accessible storage medium as recited in claim 24 , wherein selected ones of the dirty data blocks are each associated with a special tag in the write-back cache to indicate particular handling is required prior to an overwrite, wherein the program instructions are further executable to detect the special tag associated with each of the selected ones of the dirty data blocks and to responsively provide a previous version of each of the selected ones of the dirty data blocks to the storage processing node prior to writing each of the selected ones of the dirty data blocks to the storage device.

Assignments (18)
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: WILMINGTON TRUST, NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 037891/0726 →
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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 4, 2016
From: SYMANTEC CORPORATION
To: VERITAS US IP HOLDINGS LLC
Reel/Frame 037697/0412 →
CORRECTIVE ASSIGNMENT TO CORRECT THE ASSIGNEE PREVIOUSLY RECORDED ON REEL 019872 FRAME 979. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNEE IS SYMANTEC OPERATING CORPORATION. Recorded Mar 5, 2012
From: VERITAS OPERATING CORPORATION
To: SYMANTEC OPERATING CORPORATION
Reel/Frame 027819/0462 →
CHANGE OF NAME Recorded Sep 26, 2007
From: VERITAS OPERATING CORPORATION
To: SYMANTEC CORPORATION
Reel/Frame 019872/0979 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 28, 2005
From: KARR, RONALD S.; HARMER, CRAIG
To: VERITAS OPERATING CORPORATION
Reel/Frame 016524/0466 →