IP Library Granted Patent US 8,473,648
Granted Patent B2
US 8,473,648 · App. 12/969,601 · Granted Jun 25, 2013

System and method of I/O path virtualization between a raid controller and an environment service module in a storage area network

Inventors: Madhukar Gunjan Chakhaiyar (Gaya, IN); Mahmoud K Jibbe (Wichita, KS); Dhishankar Sengupta (Yelachanahalli, IN); Himanshu Dwivedi (Bangalore, IN)
Assignee: LSI Corporation
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 8,473,648
App. No.
12/969,601
Granted
Jun 25, 2013
Kind
B2
Abstract

A system and method of I/O path virtualization between a RAID controller and an environment service module (ESM) in a storage area network (SAN) is disclosed. In one embodiment, a type of I/O request is identified by an input/output (I/O) control engine upon receiving an I/O request from a host computer via a RAID controller. Further, a priority is assigned to the received I/O request based on the type of I/O request by the I/O control engine. Furthermore, the processing of the prioritized I/O request is interrupted by the I/O control engine. In addition, the prioritized I/O request is separated into a command I/O request or a status request. Also, the separated command I/O request or the status request is sent to an associated queue in a plurality of solid state drive (SSD) buffer queues (SBQ) in the I/O control engine.

Claims (62)

1. A method for I/O path virtualization between a RAID controller and an environment service module (ESM) in a storage area network (SAN), comprising:

identifying a type of I/O request by an input/output (I/O) control engine upon receiving an I/O request from a host computer via a RAID controller;

assigning a priority to the received I/O request based on the type of I/O request by the I/O control engine;

interrupting processing of the prioritized I/O request by the I/O control engine, wherein interrupting the processing of the prioritized I/O request comprises:

determining whether a host I/O time out value associated with the received I/O request is close to a predefined host I/O time out threshold value by the I/O control engine;

if so, sending the prioritized I/O request to an associated disk drive in a drive tray via a plurality of solid state drive (SSD) buffer queues (SBQs) for execution by the I/O control engine; and

if not, interrupting processing of the prioritized I/O request by the I/O control engine;

separating the prioritized I/O request into a command I/O request or a status request; and

sending the separated command I/O request or the status request to an associated queue in the plurality of SBQs in the I/O control engine.

2. The method of claim 1 , wherein assigning the priority to the received I/O request based on the type of I/O request comprises:

assigning the priority to the received I/O request based on priority rules/policies that are configurable by a user as a function of application and/or workload.

3. The method of claim 1 , further comprising:

determining whether the assigned priority to the received I/O request has a higher priority;

if so, sending the prioritized I/O request to the associated disk drive in the drive tray via the plurality of SBQs for execution by the I/O control engine; and

if not, sending the command I/O request or status request to queue in an associated one of the plurality of SBQs by the I/O control engine.

4. The method of claim 3 , wherein determining whether the assigned priority to the received I/O request has a higher priority, comprises:

determining whether the assigned priority to the received I/O request has a higher priority based on a look-up table by the I/O control engine.

5. The method of claim 1 , wherein the command I/O request comprises I/O request selected from the group consisting of a read I/O request and a write I/O request.

6. The method of claim 1 , wherein the status request comprises I/O request selected from the group consisting of an acknowledge request, a status request, and an error recovery level request.

7. A non-transitory computer-readable storage medium for I/O path virtualization between a RAID controller and an environment service module (ESM) in a storage area network (SAN), having instructions that, when executed by a computing device causes the computing device to:

identify a type of I/O request by an input/output (I/O) control engine upon receiving an I/O request from a host computer via a RAID controller;

assign a priority to the received I/O request based on the type of I/O request by the I/O control engine;

interrupt processing of the prioritized I/O request by the I/O control engine, wherein interrupting the processing of the prioritized I/O request comprises:

determining whether a host I/O time out value associated with the received I/O request is close to a predefined host I/O time out threshold value by the I/O control engine;

if so, sending the prioritized I/O request to an associated disk drive in a drive tray via a plurality of solid state drive (SSD) buffer queues (SBQs) for execution by the I/O control engine; and

if not, interrupting processing of the prioritized I/O request by the I/O control engine;

separate the prioritized I/O request into a command I/O request or a status request; and

send the separated command I/O request or the status request to an associated queue in the plurality of SBQs in the I/O control engine.

8. The non-transitory computer-readable storage medium of claim 7 , wherein assigning the priority to the received I/O request based on the type of I/O request comprises:

assigning the priority to the received I/O request based on priority rules/policies that are configurable by a user as a function of application and/or workload.

9. The non-transitory computer-readable storage medium of claim 7 , further having instructions to:

determine whether the assigned priority to the received I/O request has a higher priority;

if so, send the prioritized I/O request to the associated disk drive in the drive tray via the plurality of SBQs for execution by the I/O control engine; and

if not, send the command I/O request or status request to queue in an associated one of the plurality of SBQs by the I/O control engine.

10. The non-transitory computer-readable storage medium of claim 9 , wherein determining whether the assigned priority to the received I/O request has a higher priority, comprises:

determining whether the assigned priority to the received I/O request has a higher priority based on a look-up table by the I/O control engine.

11. The non-transitory computer-readable storage medium of claim 7 , wherein the command I/O request comprises I/O request selected from the group consisting of a read I/O request and a write I/O request.

12. The non-transitory computer-readable storage medium of claim 7 , wherein the status request comprises I/O request selected from the group consisting of an acknowledge request, a status request, and an error recovery level request.

13. A storage area network (SAN), comprising:

one or more host computers;

an environment service module (ESM), wherein the ESM comprises:

an input/output (I/O) control engine including a plurality of solid state drive (SSD) buffer queues (SBQs); and

one or more drive trays including disk drives coupled to the I/O control engine; and

a RAID controller coupled between the one or more host computers and the ESM,

wherein the I/O control engine identifies a type of I/O request upon receiving an I/O request from one of the one or more host computers,

wherein the I/O control engine assigns a priority to the received I/O request based on the type of I/O request,

wherein the I/O control engine interrupts processing of the prioritized I/O request,

wherein the I/O control engine determines whether a host I/O time out value associated with the received I/O request is close to a predefined host I/O time out threshold value, interrupts processing of the prioritized I/O request if the host I/O time out value is not close to the defined host I/O time out threshold value, and sends the prioritized I/O request to associated disk drive in a drive tray via the plurality of SBQs for execution by the I/O control engine if the host I/O time out value is close to the defined host I/O time out threshold value,

wherein the I/O control engine separates the prioritized I/O request into a command I/O request or a status request, and

wherein the I/O control engine sends the command I/O request or status request to associated queues in the plurality of SBQs in the I/O control engine.

14. The SAN of claim 13 , wherein the I/O control engine further comprises:

a frame identification logic engine;

a priority rules/policies engine and timer;

a direct memory access (DMA) interrupt logic engine coupled to the priority rules/policies engine and timer and the frame identification logic engine;

an I/O path logic engine coupled to the frame identification logic engine and the DMA interrupt logic engine;

a status path module coupled to the I/O path logic engine;

a command path module coupled to the I/O path logic engine, wherein the status path module and the command path module are communicatively coupled to the plurality of SBQs and associated drive channels; and

a plurality of drive trays coupled to the associated drive channels, wherein the frame identification logic engine identifies the type of I/O request upon receiving the I/O request from one of the one or more host computers via the RAID controller, wherein the priority rules/policy engine and timer assigns the priority to the received I/O request based on the type of I/O request, wherein the DMA interrupt logic engine interrupts processing of the prioritized I/O request based on the type of I/O request, wherein the I/O path logic engine splits the prioritized I/O request into the command I/O request or the status request, and wherein the command path module and the status path module sends the command I/O request and the status request, respectively, to associated SBQs.

15. The SAN of claim 14 , wherein the time associated with the priority rules/policies engine and timer determines whether the host I/O time out value associated with the received I/O request is close to the predefined host I/O time out threshold value, wherein the DMA interrupt logic engine interrupts processing of the prioritized I/O request if the host I/O time out value is not close to the defined host I/O time out threshold value, and wherein the I/O path logic engine sends the prioritized I/O request to the associated disk drive in the drive tray via the plurality of SBQs for execution by the I/O control engine if the host I/O time out value is close to the defined host I/O time out threshold value.

16. The SAN of claim 14 , wherein the priority rules/policies engine and timer assigns the priority to the received I/O request based on priority rules/policies that are configurable by a user as a function of application and/or workload.

17. The SAN of claim 16 , wherein the I/O path logic engine determines whether the assigned priority to the received I/O request has a higher priority, wherein the I/O path logic engine sends the prioritized I/O request to an associated disk drive in the drive tray via the plurality of SBQs for execution by the I/O control engine if the assigned priority to the received I/O request has the higher priority, and wherein the I/O path logic engine sends the command I/O request or status request to respective queues in one of the plurality of SBQs by the I/O control engine if the assigned priority to the received I/O request does not have a higher priority.

18. The SAN of claim 17 , wherein the priority rules/policies engine and timer determines whether the assigned priority to the received I/O request has a higher priority based on a look-up table.

Assignments (8)
CORRECTIVE ASSIGNMENT TO CORRECT THE EFFECTIVE DATE OF MERGER TO 09/05/2018 PREVIOUSLY RECORDED AT REEL: 047230 FRAME: 0133. ASSIGNOR(S) HEREBY CONFIRMS THE MERGER. Recorded Oct 29, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047630/0456 →
MERGER Recorded Oct 4, 2018
From: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
To: AVAGO TECHNOLOGIES INTERNATIONAL SALES PTE. LIMITED
Reel/Frame 047230/0133 →
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 →
TERMINATION AND RELEASE OF SECURITY INTEREST IN PATENT RIGHTS (RELEASES RF 032856-0031) Recorded Feb 2, 2016
From: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
To: LSI CORPORATION; AGERE SYSTEMS LLC
Reel/Frame 037684/0039 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 3, 2015
From: LSI CORPORATION
To: AVAGO TECHNOLOGIES GENERAL IP (SINGAPORE) PTE. LTD.
Reel/Frame 035390/0388 →
PATENT SECURITY AGREEMENT Recorded May 8, 2014
From: LSI CORPORATION; AGERE SYSTEMS LLC
To: DEUTSCHE BANK AG NEW YORK BRANCH, AS COLLATERAL AGENT
Reel/Frame 032856/0031 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 16, 2010
From: CHAKHAIYAR, MADHUKAR GUNJAN; JIBBE, MAHMOUD K; SENGUPTA, DHISHANKAR; DWIVEDI, HIMANSHU
To: LSI CORPORATION
Reel/Frame 025508/0408 →
Continuity (1)
Related Publication 20120159474A1 · Jun 21, 2012