IP Library Granted Patent US 9,003,104
Granted Patent B2
US 9,003,104 · App. 13/287,998 · Granted Apr 7, 2015

Systems and methods for a file-level 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 9,003,104
App. No.
13/287,998
Granted
Apr 7, 2015
Kind
B2
Abstract

A multi-level cache comprises a plurality of cache levels, each configured to cache I/O request data pertaining to I/O requests of a different respective type and/or granularity. The multi-level cache may comprise a file-level cache that is configured to cache I/O request data at a file-level of granularity. A file-level cache policy may comprise file selection criteria to distinguish cacheable files from non-cacheable files. The file-level cache may monitor I/O requests within a storage stage, and may service I/O requests from a cache device.

Claims (45)

1. A method for caching input/output (I/O) request data using a non-volatile cache, the method comprising:

monitoring I/O requests on an operating system operating on a computing device;

applying file selection criteria to the monitored I/O requests to identify an I/O request pertaining to a cacheable file;

updating I/O request metadata in response to a source identifier of the identified I/O request satisfying the file selection criteria;

accessing the I/O request metadata in response to monitoring a subsequent I/O request associated with the source identifier;

determining by way of the I/O request metadata that the subsequent I/O request pertains to a cacheable file; and

servicing the subsequent I/O request using a non-volatile cache in response to the cacheable file satisfying the file selection criteria.

2. The method of claim 1 , further comprising monitoring the I/O requests using a file filter driver.

3. The method of claim 1 , further comprising monitoring the I/O requests within a guest operating system of a virtual machine, and wherein the non-volatile cache is provided by a host of the virtual machine.

4. The method of claim 1 , wherein monitoring the I/O requests comprises ignoring one or more of non-paging I/O requests and direct I/O requests.

5. The method of claim 1 , wherein servicing the identified subsequent I/O request comprises:

allocating a cache tag to associate an identifier of the cacheable file with a cache address of the non-volatile cache; and

storing data of the subsequent I/O request on the non-volatile cache at the cache address.

6. The method of claim 1 , further comprising maintaining a plurality of cache tags to associate data of cacheable files with respective cache addresses of the non-volatile cache, wherein servicing the subsequent I/O request comprises:

identifying a cache tag associated with a source identifier of the cacheable file; and

servicing the I/O request using a cache address of the identified cache tag.

7. The method of claim 1 , wherein servicing an I/O request comprises one of one of accessing data on the non-volatile cache, writing data to the non-volatile cache, modifying data on the non-volatile cache, and removing data on the non-volatile cache.

8. The method of claim 1 , wherein the identified I/O request comprises one of a non-paging I/O request, a direct I/O request, a file open request, a file modify request, a file read request, and a file update request, and a file truncate request.

9. The method of claim 1 , further comprising servicing the subsequent I/O request in response to an application corresponding to the identified I/O request satisfying application criteria.

10. The method of claim 9 , wherein the application criteria prevents files associated with one of a backup application and a virus scanning application from being serviced using the non-volatile cache.

11. The method of claim 1 , wherein the operating system comprises a storage stack and an existing cache manager, the method further comprising servicing a cache miss in the existing cache manager using the non-volatile cache.

12. The method of claim 1 , further comprising servicing an I/O request in response to a size of data for the I/O request satisfying a maximum size threshold and a minimum size threshold.

13. The method of claim 1 , further comprising servicing the subsequent I/O request in response to determining that servicing the sequent I/O request satisfies a cache admission policy configured to prevent poisoning the non-volatile cache.

14. A system for caching input/output (I/O) request data using a non-volatile cache, comprising:

an I/O request monitor to monitor I/O requests within a storage stack;

a non-volatile cache; and

a cache management system configured to apply file selection criteria to the monitored I/O requests to identify I/O requests that pertain to cacheable files, wherein the cache management system services the identified I/O requests using the non-volatile cache,

wherein the cache management system is further configured to associate a first I/O request with I/O request metadata comprising one of a source identifier and an indication of whether the first I/O request pertains to a cacheable file, and

wherein in response to a second I/O request associated with the I/O request metadata, the cache management system is configured to access the I/O request metadata and to service the second I/O request using the non-volatile cache in response to determining that the I/O request metadata indicates that the second I/O request pertains to a cacheable file.

15. The system of claim 14 , wherein the cache management system operates within a virtual machine and is configured to service I/O requests that pertain to cacheable files using cache metadata maintained within the virtual machine, and wherein non-volatile cache operates within the host of the virtual machine.

16. The system of claim 14 , wherein the cache management system is configured to service an identified I/O request by;

allocating a cache tag in cache metadata that associates a source identifier of the identified I/O request with a cache address of the non-volatile cache, and

storing data of the identified I/O request on the non-volatile cache at the cache address.

17. The system of claim 14 , wherein the cache management system is configured to service an identified I/O request by;

identifying a cache tag in the cache metadata corresponding to a source identifier of the identified I/O request; and

accessing data of the identified I/O request on the non-volatile cache at a cache address of the cache tag.

18. The system of claim 14 , wherein the file selection criteria comprises one of file name matching criteria, file extension criteria, file path criteria, file application association criteria, and a regular expression.

19. The system of claim 14 , wherein the I/O request monitor is configured to ignore one of non-paging I/O requests and direct I/O requests.

20. A non-transitory computer-readable storage medium comprising computer-readable instructions configured to cause a computing device to cache input/output (I/O) request data on a non-volatile cache, the method comprising:

monitoring I/O requests within a virtual machine;

applying file selection criteria to the monitored I/O requests to identify I/O requests pertaining to cacheable files;

updating I/O request metadata in response to identifying an I/O request associated with a source identifier that satisfies the file selection criteria;

accessing the I/O request metadata in response to monitoring a subsequent I/O request associated with the source identifier;

determining that the subsequent I/O request pertains to a cacheable file based on the updated I/O request metadata; and

servicing the subsequent I/O request using a non-volatile cache operating in the host for the virtual machine.

Assignments (12)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 31, 2024
From: SANDISK TECHNOLOGIES LLC
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 069796/0423 →
CHANGE OF NAME Recorded May 25, 2016
From: SANDISK TECHNOLOGIES INC
To: SANDISK TECHNOLOGIES LLC
Reel/Frame 038807/0898 →
RELEASE OF SECURITY INTEREST Recorded May 4, 2016
From: FUSION-IO, INC.
To: SANDISK CORPORATION
Reel/Frame 038748/0880 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: PS12 LUXCO S.A.R.L.
Reel/Frame 038362/0575 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2016
From: PS12 LUXCO S.A.R.L.
To: LONGITUDE ENTERPRISE FLASH S.A.R.L.
Reel/Frame 038362/0604 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 31, 2016
From: LONGITUDE ENTERPRISE FLASH SARL
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 038324/0628 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 26, 2014
From: FUSION-IO, INC.
To: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033419/0748 →
SECURITY INTEREST Recorded Jul 24, 2014
From: INTELLIGENT INTELLECTUAL PROPERTY HOLDINGS 2 LLC
To: FUSION-IO, INC.
Reel/Frame 033410/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jul 23, 2014
From: FUSION-IO, INC.
To: INTELLECTUAL PROPERTY HOLDINGS 2 LLC
Reel/Frame 033390/0566 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 6, 2012
From: JOSHI, VIKRAM; LUAN, YANG; BROWN, MICHAEL F.; VIDWANS, HRISHIKESH A.
To: FUSION-IO, INC.
Reel/Frame 027494/0119 →