IP Library Granted Patent US 9,632,711
Granted Patent B1
US 9,632,711 · App. 14/322,520 · Granted Apr 25, 2017

Processing flush requests by utilizing storage system write notifications

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,632,711
App. No.
14/322,520
Granted
Apr 25, 2017
Kind
B1
Abstract

Systems and methods for utilization of notification or ordering commands are disclosed that can enable more efficient processing of flush requests from software programs and increase data consistency in storage devices. For example, when an application requests that a data cache be flushed, a computing device may—instead of completely emptying the data cache—notify the application of a successful flush once relevant data of the application has been committed to non-volatile memory. Targeted notifications, which may identify the relevant data in the data cache, can limit the scope of a flush request, such that the speed and efficiency of the command is increased relative to a non-specific full-cache flush. Such increases in efficiency of flush requests may greatly increase the speed and efficiency of storage devices, and consequently the performance of programs utilizing such storage devices.

Claims (52)

1. A computer-implemented method to manage consistency of data in a data cache of a storage device, the computer-implemented method comprising:

receiving a request from a software program to flush the data cache;

generating a notification command that, when executed by the storage device, generates a notification indicating writing of at least one data item within the data cache to a non-volatile memory, wherein the notification command identifies the at least one data item based at least in part on an identifier of the at least one data item;

transmitting the notification command to the storage device via a communication link;

receiving the notification from the storage device; and

transmitting to the software program an indication of completion of the request to flush the data cache.

2. The computer-implemented method of claim 1 , wherein the communication link is at least one of a system bus, a storage bus, or a communication network.

3. The computer-implemented method of claim 1 , wherein the communication link utilizes at least one of a serial ATA (SATA) standard, advanced host controller interface (AHCI) standard, or a non-volatile memory express (NVMe) standard.

4. The computer-implemented method of claim 1 , wherein the at least one data item is associated with a request to write data generated by the software program, and wherein the method further comprises:

prior to receiving the request from the software program to flush the data cache:

selecting the identifier based at least in part on the request to write data; and

transmitting the identifier and the at least one data item to the storage device.

5. The computer-implemented method of claim 4 , wherein the identifier is selected based at least in part on metadata associated with the request to write data.

6. The computer-implemented method of claim 5 , wherein the metadata indicates at least one of an identity of the software program, a reference location to which the at least one data item is to be written, and a pre-existing identifier of the at least one data item.

7. The computer-implemented method of claim 1 , wherein the identifier is a designated identifier used to prevent writing of the at least one data item if it is determined that the request is associated with a page file.

8. The computer-implemented method of claim 1 , wherein the identifier is associated with a plurality of data items within the data cache.

9. The computer-implemented method of claim 8 , wherein the plurality of data items are associated with at least one of: an individual file or the software program.

10. The computer-implemented method of claim 1 , wherein the software program is at least one of: a software application or an operating system.

11. A system comprising:

a communication interface associated with a host system and configured to transmit communications between the host system and a storage system; and

a processor associated with the host system and configured with specific computer-executable instructions that, when executed by the processor, cause the processor to:

receive a request from a software program to flush a data cache of the storage system;

generate a notification command that, when executed by the storage system, generates a notification indicating writing of at least one data item within the data cache to a non-volatile memory of the storage system, wherein the notification command identifies the at least one data item based at least in part on an identifier of the at least one data item;

transmit the notification command to the storage system via the communication interface;

receive the notification from the storage system; and

transmit to the software program an indication of completion of the request to flush the data cache.

12. The system of claim 11 , wherein the at least one data item is associated with a request to write data generated by the software program, and wherein the computer-executable instructions further cause the processor to:

prior to reception of the request from the software program to flush the data cache:

select the identifier based at least in part on the request to write data;

transmit the identifier to the storage system; and

transmit the at least one data item to the storage system for storage in the data cache.

13. The system of claim 12 , wherein the identifier is selected based at least in part on metadata associated with the request to write data.

14. The system of claim 13 , wherein the metadata indicates at least one of an identity of the software program, a location to which the at least one data item is to be written, or a pre-existing identifier of the at least one data item.

15. The system of claim 11 , wherein the identifier is a designated identifier used to prevent writing of the at least one data item if it is determined that the request is associated with a page file.

16. The system of claim 11 , wherein the identifier is associated with a plurality of data items within the data cache.

17. The system of claim 16 , wherein the plurality of data items are associated with at least one of: an individual file or the software program.

18. A non-transitory computer-readable medium including computer-executable instructions that, when executed by a computing device, cause the computing device to:

receive a request from a software program to flush a data cache of a storage system;

generate a notification command that, when executed by the storage system, generates a notification indicating writing of at least one data item within the data cache to a non-volatile memory, wherein the notification command identifies the at least one data item based at least in part on an identifier of the at least one data item;

transmit the notification command to the storage system via a communication interface;

receive the notification from the storage system; and

transmit to the software program an indication of completion of the request to flush the data cache.

19. The non-transitory computer-readable medium of claim 18 , wherein the at least one data item is associated with a request to write data generated by the software program, and wherein the computer-executable instructions further cause the computing device to:

prior to reception of the request from the software program to flush the data cache:

select the identifier based at least in part on the request to write data;

transmit the identifier to the storage system; and

transmit the at least one data item to the storage system for storage in the data cache.

20. The non-transitory computer-readable medium of claim 19 , wherein the identifier is selected based at least in part on metadata associated with the request to write data.

21. The non-transitory computer-readable medium of claim 20 , wherein the metadata indicates at least one of an identity of the software program, a location to which the at least one data item is to be written, or—a pre-existing identifier of the at least one data item.

22. The non-transitory computer-readable medium of claim 18 , wherein the identifier is a designated identifier used to prevent writing of the at least one data item if it is determined that the request is associated with a page file.

23. The non-transitory computer-readable medium of claim 18 , wherein the identifier is associated with a plurality of data items within the data cache.

24. The non-transitory computer-readable medium of claim 23 wherein the plurality of data items are associated with at least one of: an individual file or the software program.

Assignments (8)
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
RELEASE OF SECURITY INTEREST AT REEL 038744 FRAME 0481 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058982/0556 →
RELEASE OF SECURITY INTEREST Recorded Mar 5, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 045501/0714 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038744/0481 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038744/0281 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038722/0229 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 17, 2015
From: OBR, NATHAN
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 036117/0485 →