IP Library Granted Patent US 9,483,207
Granted Patent B1
US 9,483,207 · App. 14/593,898 · Granted Nov 1, 2016

Methods and systems for efficient caching using an intelligent storage adapter

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,483,207
App. No.
14/593,898
Granted
Nov 1, 2016
Kind
B1
Abstract

Systems and methods for caching information are provided. A method includes receiving an input/output (I/O) request for writing data at a storage device, the I/O request including a logical unit number (LUN) identifier, a logical block address (LBA) associated with storage space at the storage device and a data payload; determining a hash value using the data payload; using the hash value to determine if the data payload already has been cached by an adapter; updating a reference count at a hash data structure indicating that the cached data payload is referenced by more than one I/O request, when the data payload has been cached by the adapter; and updating the hash data structure, when the data payload does not exist at a cache managed by the adapter.

Claims (38)

1. A machine-implemented method, comprising:

configuring an adapter to cache data for an application executed by a computing device operationally coupled to the adapter, where the adapter caches data using a cache logical unit number (LUN) based on storage space at a storage device of the adapter;

receiving an input/output (I/O) request by the adapter for writing data at the storage device, the I/O request including a logical unit number (LUN) identifier, a logical block address (LBA) associated with storage space at the storage device and a data payload;

determining by the adapter, a hash value using the data payload;

using the hash value by the adapter to determine if the data payload already has been cached by the adapter;

updating a reference count at a hash data structure stored at the adapter indicating that the cached data payload is referenced by more than one I/O request, when the data payload has been cached by the adapter; and

updating the hash data structure, when the data payload does not exist at the cache LUN managed by the adapter.

2. The machine-implemented method of claim 1 , wherein the adapter is configured to operate as host bus adapter and an intelligent storage adapter that manages the cache LUN.

3. The machine-implemented method of claim 1 , wherein the hash data structure at the adapter stores a target identifier, a LUN identifier, the LBA and an address of at least a cache block that is used by the adapter to cache the data payload.

4. The machine-implemented method of claim 1 , wherein when the data payload has not been cached by the adapter, the adapter generates a new entry in the hash data structure for storing the LUN identifier, the LBA, a new reference count and an address of a cache block where the data payload is stored.

5. The machine-implemented method of claim 1 , wherein the storage device is a storage area network (SAN) based storage device.

6. The machine-implemented method of claim 1 , wherein the cache LUN is based on a solid state storage device managed by the adapter.

7. A system, comprising:

a memory containing machine readable medium comprising machine executable code having stored thereon instructions; and

a processor module coupled to the memory, the processor module configured to execute the machine executable code to:

configure an adapter to cache data for an application executed by a computing device operationally coupled to the adapter, where the adapter caches data using a cache logical unit number (LUN) based on storage space at a storage device of the adapter;

receive an input/output (I/O) request by the adapter for writing data at the storage device, the I/O request including a logical unit number (LUN) identifier, a logical block address (LBA) associated with storage space at the storage device and a data payload;

determine by the adapter, a hash value using the data payload;

use the hash value by the adapter to determine if the data payload already has been cached by the adapter;

update a reference count at a hash data structure stored at the adapter indicating that the cached data payload is referenced by more than one I/O request, when the data payload has been cached by the adapter; and

update the hash data structure, when the data payload does not exist at the cache LUN managed by the adapter.

8. The system of claim 7 , wherein the adapter is configured to operate as host bus adapter and an intelligent storage adapter that manages the cache LUN.

9. The system of claim 7 , wherein the hash data structure at the adapter stores a target identifier, the LUN identifier, the LBA and an address of at least a cache block that is used by the adapter to cache the data payload.

10. The system of claim 7 , wherein when the data payload has not been cached by the adapter, the adapter generates a new entry in the hash data structure for storing the LUN identifier, the LBA, a new reference count and an address of a cache block where the data payload is stored.

11. The system of claim 7 , wherein the storage device is a storage area network (SAN) based storage device.

12. The system of claim 7 , wherein the cache LUN is based on a solid state storage device managed by the adapter.

13. A non-transitory, machine readable storage medium having stored thereon instructions for performing a method, comprising machine executable code which when executed by at least one machine, causes the machine to:

configure an adapter to cache data for an application executed by a computing device operationally coupled to the adapter, where the adapter caches data using a cache logical unit number (LUN) based on storage space at a storage device of the adapter;

receive an input/output (I/O) request by the adapter for writing data at the storage device, the I/O request including a logical unit number (LUN) identifier, a logical block address (LBA) associated with storage space at the storage device and a data payload;

determine by the adapter, a hash value using the data payload;

use the hash value by the adapter to determine if the data payload already has been cached by the adapter;

update a reference count at a hash data structure stored at the adapter indicating that the cached data payload is referenced by more than one I/O request, when the data payload has been cached by the adapter; and

update the hash data structure, when the data payload does not exist at the cache LUN managed by the adapter.

14. The storage medium of claim 13 , wherein the adapter is configured to operate as host bus adapter and an intelligent storage adapter that manages the cache LUN.

15. The storage medium of claim 13 , wherein the hash data structure at the adapter stores a target identifier, the LUN identifier, the LBA and an address of at least a cache block that is used by the adapter to cache the data payload.

16. The storage medium of claim 13 , wherein when the data payload has not been cached by the adapter, the adapter generates a new entry in the hash data structure for storing the LUN identifier, the LBA, a new reference count and an address of a cache block where the data payload is stored.

17. The storage medium of claim 13 , wherein the storage device is a storage area network (SAN) based storage device.

18. The storage medium of claim 13 , wherein the cache LUN is based on a solid state storage device managed by the adapter.

Assignments (7)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 15, 2020
From: CAVIUM INTERNATIONAL
To: MARVELL ASIA PTE, LTD.
Reel/Frame 053179/0320 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 17, 2020
From: CAVIUM, LLC
To: CAVIUM INTERNATIONAL
Reel/Frame 051948/0807 →
CHANGE OF NAME Recorded Oct 8, 2018
From: CAVIUM, INC.
To: CAVIUM, LLC
Reel/Frame 047205/0953 →
RELEASE OF SECURITY INTEREST Recorded Jul 6, 2018
From: JP MORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
To: CAVIUM, INC; CAVIUM NETWORKS LLC; QLOGIC CORPORATION
Reel/Frame 046496/0001 →
MERGER Recorded Oct 18, 2017
From: QLOGIC CORPORATION
To: CAVIUM, INC.
Reel/Frame 044812/0504 →
SECURITY AGREEMENT Recorded Mar 1, 2017
From: QLOGIC CORPORATION
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 041854/0119 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jan 9, 2015
From: SRIVASTAVA, GAURAV; KSHATRIYA, SAMEER K.; REVANKAR, SHASHIKIRAN
To: QLOGIC, CORPORATION
Reel/Frame 034676/0987 →