IP Library Granted Patent US 9,378,152
Granted Patent B2
US 9,378,152 · App. 14/274,153 · Granted Jun 28, 2016

Systems and methods for I/O processing using out-of-band hinting to block driver or storage controller

Inventors: Kishore Kaniyar Sampathkumar (Bangalore, IN); Parag Maharana (Fremont, CA); Sumanesh Samanta (Bangalore, IN); Saugata Das Purkayastha (Bangalore, IN)
Assignee: Avago Technologies General IP (Singapore) Pte. Ltd.
G06F12/122G06F12/0871G06F12/0888G06F2212/604G06F2212/6046G06F2212/69
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,378,152
App. No.
14/274,153
Granted
Jun 28, 2016
Kind
B2
Abstract

A storage subsystem can achieve more efficient I/O processing by enabling users to specify and pass out of band I/O hints comprising an object to be hinted, a hint type, and caching strategies associated with a hint type. A hinted object may be either a virtual device or a file. In addition to priority cache, hint types may include never-cache, sticky-cache, and volatile-cache. Hints may be passed via command-line or graphical-user interfaces.

Claims (66)

1. A method for processing at least one Input/Output (I/O) request issued by an application to at least one of a filename, a device, and a continuous range of logical block addresses (LBA) of a virtual device via out-of-band hinting, comprising:

directly interfacing with at least one of a storage controller and a block driver while bypassing an I/O stream;

defining at least one hint, the at least one hint including the at least one of a filename, a device, and a continuous range of logical block addresses,

a hint type, and

associated instructions for processing the at least one I/O request; and

passing the at least one hint to the at least one of a storage controller and a block driver while bypassing the I/O stream.

2. The method of claim 1 , wherein the hint type includes at least one of a priority-cache hint type, a never-cache hint type, a sticky-cache hint type, and a volatile-cache hint type.

3. The method of claim 2 , wherein the hint type is a priority-cache hint type and the associated instructions include

instructions for maintaining at least one virtual cache window associated with the at least one I/O request in a first queue associated with a priority value.

4. The method of claim 3 , wherein the first queue is a least-recently-used queue and the priority value is selected from a continuous range of integers from 1 to 15.

5. The method of claim 2 , wherein the hint type is a never-cache hint type and the associated instructions include

instructions for passing the at least one I/O request directly to a storage device;

instructions for preventing the creation of a physical cache window associated with at least one continuous range of logical block addresses associated with the at least one I/O request; and

instructions for forcing eviction of the at least one continuous range of logical block addresses.

6. The method of claim 2 , wherein the hint type is a sticky-cache hint type and the associated instructions include

instructions for converting at least one continuous range of logical block addresses associated with the at least one I/O request to a physical cache window; and

instructions for maintaining at least one continuous range of logical block addresses associated with the at least one I/O request in a second queue, if the at least one continuous range of logical block addresses has been modified and its contents written to a storage device.

7. The method of claim 2 , wherein the hint type is a volatile-cache hint type and the associated instructions include

instructions for converting at least one continuous range of logical block addresses associated with the at least one I/O request to a physical cache window; and

instructions for maintaining the at least one continuous range of logical block addresses in a third queue if the size of an associated virtual device is not greater than the size of the associated cache device.

8. The method of claim 2 , wherein the hint type is at least one of a sticky-cache classification and a volatile-cache hint type and the associated instructions include

instructions for flagging the at least one continuous range of logical block addresses associated with the at least one I/O request as either sticky-cache or volatile-cache; and

instructions for maintaining the at least one continuous range of logical block addresses in a second queue.

9. The method of claim 1 , wherein the passing the at least one hint to the at least one of a storage controller and a block driver includes

passing the at least one hint to the at least one of a storage controller and a block device driver via at least one of a command-line interface and a graphical user interface.

10. The method of claim 1 , wherein the specifying at least one hint includes

determining the file system to which the at least one file belongs;

determining an index node uniquely associated with the at least one file;

searching at least one hint table for a hint associated with the index node; and

returning at least one of an associated hint type and a null value.

11. The method of claim 1 , wherein the passing the at least one hint to a block driver includes:

notifying the at least one block driver of a change in hint type.

12. The method of claim 1 , wherein the defining at least one hint, the at least one hint including the at least one of a filename, a device, and a continuous range of logical block addresses, a hint type, and associated instructions for processing the at least one I/O request, includes:

defining instructions associated with transitioning the at least one of a filename, a device, and a continuous range of logical block addresses from a first hint type to a second hint type.

13. A system for managing a processing of an Input/Output (I/O) request from at least one application via out-of-band hinting, comprising:

a hint engine configured to enable the at least one application to specify at least one hint and to pass the at least one hint to at least one of a block driver and a storage controller;

a storage controller including hint firmware configured to directly process the at least one hint;

a block driver including a hint driver configured to directly process the at least one hint and to notify the hint firmware of a change in hint type;

a configuration tool communicatively coupled to the hint driver and to the hint firmware, configured to manage the at least one hint;

at least one virtual device including a first continuous range of logical block addresses (LBA);

at least one file system operably coupled to the block driver; and

at least one storage device operably coupled to the storage controller.

14. The system of claim 13 , wherein the at least one storage device includes

at least one cache device including a plurality of cache windows, each cache window including a continuous range of logical block addresses, a metadata structure, and a plurality of cache lines.

15. The system of claim 13 , wherein the at least one hint includes

at least one of a filename, a device, and a second continuous range of LBAs of the virtual device; and

a hint type.

16. The system of claim 15 , wherein the at least one hint further includes:

a flag indicating whether the at least one hint is a file hint or a device hint.

17. The system of claim 13 , wherein the configuration tool is configured to

load the at least one hint;

query the at least one hint;

modify the at least one hint;

remove the at least one hint; and

pass the at least one hint via at least one of a graphical user interface and a command-line interface.

18. The system of claim 13 , wherein at least one of the hint driver and the hint firmware is further configured to process additional instructions associated with the change in hint type.

19. The system of claim 13 , wherein the hint driver includes

at least one hint table, the at least one hint table including at least one hint device, each hint device associated with at least one file system, at least one unique identifier corresponding to the at least one file system, each file system associated with at least one index node, each index node uniquely associated with a filename.

20. A data storage apparatus configured to manage a processing of an Input/Output (I/O) request from at least one application via out-of-band hinting, comprising:

a hint engine configured to enable the at least one application to specify at least one hint and to pass the at least one hint to at least one of a block driver and a storage controller;

a storage controller including hint firmware configured to directly process the at least one hint;

a block driver including a hint driver configured to directly process the at least one hint and to notify the hint firmware of a change in hint type;

a configuration tool communicatively coupled to the hint driver and to the hint firmware, configured to manage the at least one hint;

at least one virtual device including a first continuous range of logical block addresses (LBA);

at least one file system operably coupled to the block driver; and

at least one storage device operably coupled to the storage controller.

Assignments (7)
CORRECTIVE ASSIGNMENT TO CORRECT THE PATENT NUMBER 9,385,856 TO 9,385,756 PREVIOUSLY RECORDED AT REEL: 47349 FRAME: 001. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Mar 22, 2019
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 051144/0648 →
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE PREVIOUSLY RECORDED ON REEL 047229 FRAME 0408. ASSIGNOR(S) HEREBY CONFIRMS THE THE EFFECTIVE DATE IS 09/05/2018. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047349/0001 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047229/0408 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENTS Recorded Feb 3, 2017
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 041710/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 11, 2016
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 037808/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2015
From: LSI CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 035390/0388 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 9, 2014
From: SAMPATHKUMAR, KISHORE KANIYAR; MAHARANA, PARAG R.; SAMANTA, SUMANESH; PURKAYASTHA, SAUGATA DAS
To: LSI CORPORATION
Reel/Frame 032862/0059 →
Continuity (1)
Related Publication 20150324300A1 · Nov 12, 2015