IP Library Granted Patent US 10,282,342
Granted Patent B2
US 10,282,342 · App. 15/441,041 · Granted May 7, 2019

Parallel processing in SCSI miniport driver of single controller and dual controller storage systems

Inventors: Vemuri Sai Krishna (Guntur, IN); Anirban Kundu (Kolkata, IN); Naman Jain (Bengaluru, IN)
Assignee: Dell Products L.P.
G06F13/4226G06F3/065G06F3/0619G06F3/0661G06F3/0665G06F3/0689G06F13/102G06F13/24G06F13/423
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 10,282,342
App. No.
15/441,041
Granted
May 7, 2019
Kind
B2
Abstract

A method includes receiving, by a storage driver associated with a storage controller and a corresponding storage array, a data structure associated with an I/O request from a host, wherein the data structure is indicative of a virtual address. A top layer and a RAID core layer of a RAID miniport driver execute asynchronously to perform preprocessing operations including generating a linked plurality of physical I/O (PIO) data structures in accordance with the virtual address and a RAID configuration of the storage array, and storing a pointer to the linked plurality of PIO data structures. A protocol layer of the RAID miniport driver may then be executed synchronously to transfer, in accordance with the linked plurality of PIO data structures, I/O data corresponding to the I/O request between the storage controller and the storage array. Interrupt operations may then be performed synchronously to indicate completion of the I/O request to the host.

Claims (41)

1. A method, comprising:

receiving, by a storage driver associated with a storage controller and a corresponding storage array, a data structure associated with an input/output (I/O) request from a host, wherein the data structure is indicative of a virtual address;

executing a top layer and redundant array of inexpensive disks (RAID) core layer of a RAID miniport driver asynchronously to perform preprocessing operations including: generating a linked plurality of physical I/O (PIO) data structures in accordance with the virtual address and a RAID configuration of the storage array; and

storing a pointer to the linked plurality of PIO data structures;

executing a protocol layer of the RAID miniport driver synchronously to transfer, in accordance with the linked plurality of PIO data structures, I/O data corresponding to the I/O request between the storage controller and the storage array; and

synchronously performing interrupt operations to indicate completion of the I/O request to the host;

wherein executing the top layer and RAID core driver asynchronously comprises executing the top layer and RAID core driver without acquiring an interrupt lock and wherein executing the protocol layer synchronously comprises acquiring an interrupt lock before executing the protocol layer.

2. The method of claim 1 , wherein executing the top layer and RAID core layer comprises calling the top layer and RAID core layer from a BuildIO routine of the storage driver of a small computer systems interface (SCSI) miniport driver.

3. The method of claim 2 , wherein executing the protocol layer synchronously includes acquiring an interrupt lock for the storage controller and calling a StartIO routine of the SCSI port miniport driver.

4. The method of claim 1 , wherein the data structure associated with the I/O request comprises a SCSI request block (SRB) and wherein storing the pointer comprises storing the pointer within an SRBextension of the SRB.

5. The method of claim 4 , wherein generating the linked plurality of PIO data structures comprises generating the linked plurality selectively based on a source of the I/O request.

6. The method of claim 5 , further comprising:

maintaining an SRB state indicator in the SRBextension and updating the SRB state indicator when a BuildIO or StartIO is executed, wherein generating the linked plurality selectively comprises generating the linked plurality based on the SRB state indicator.

7. The method of claim 1 , wherein the top layer, RAID core layer, and the protocol layer are executed via one of two storage controllers and wherein the interrupt operations are performed via the other of the two storage controllers.

8. The method of claim 7 , wherein the top layer, RAID core layer and the protocol layer are executed by the second-interrupted of the two storage controllers.

9. An information handling system comprising:

a processor;

a storage medium including data structures and processor executable instructions that, when executed by the processor, cause operations comprising: receiving, by a storage driver associated with a storage controller and a corresponding storage array, a data structure associated with an input/output (I/O) request from a host, wherein the data structure is indicative of a virtual address;

executing a top layer and a redundant array of inexpensive disks (RAID) core layer of a RAID miniport driver asynchronously to perform preprocessing operations including: generating a linked plurality of physical I/O (PIO) data structures in accordance with the virtual address and a RAID configuration of the storage array; and

storing a pointer to the linked plurality of PIO data structures;

executing a protocol layer of the RAID miniport driver synchronously to transfer, in accordance with the linked plurality of PIO data structures, I/O data corresponding to the I/O request between the storage controller and the storage array; and

synchronously performing interrupt operations to indicate completion of the I/O request to the host;

wherein executing the top layer and RAID core driver asynchronously comprises executing the top layer and RAID core driver without acquiring an interrupt lock and wherein executing the protocol layer synchronously comprises acquiring an interrupt lock before executing the protocol layer.

10. The information handling system of claim 9 , wherein executing the top layer and RAID core layer comprises calling the top layer and RAID core layer from a BuildIO routine of the storage driver of a small computer system interface (SCSI) miniport driver.

11. The information handling system of claim 9 , wherein executing the protocol layer synchronously further includes calling a StartIO routine of the SCSI port miniport driver.

12. The information handling system of claim 9 , wherein the data structure associated with the I/O request comprises a SCSI request block (SRB) and wherein storing the pointer comprises storing the pointer within an SRBextension of the SRB.

13. The information handling system of claim 12 , wherein generating the linked plurality of PIO data structures comprises generating the linked plurality selectively based on a source of the I/O request.

14. The information handling system of claim 13 , wherein the operations include:

maintaining an SRB state indicator in the SRBextension and updating the SRB state indicator when a BuildIO or StartIO is executed, wherein generating the linked plurality selectively comprises generating the linked plurality based on the SRB state indicator.

15. The information handling system of claim 9 , wherein the top layer, RAID core layer, and the protocol layer are executed via one of two storage controllers and wherein the interrupt operations are performed via the other of the two storage controllers.

16. The information handling system of claim 15 , wherein the top layer, RAID core layer and the protocol layer are executed by the second-interrupted of the two storage controllers.

17. A non-transitory computer readable medium, comprising processor executable instructions that, when executed by a processor, cause the processor to perform operations comprising:

receiving, by a storage driver associated with a storage controller and a corresponding storage array, a data structure associated with an input/output (I/O) request from a host, wherein the data structure is indicative of a virtual address;

executing a top layer and RAID core driver asynchronously to perform preprocessing operations including: generating a linked plurality of physical I/O (PIO) data structures in accordance with the virtual address and a RAID configuration of the storage array; and

storing a pointer to the linked plurality of PIO data structures;

executing a protocol layer of the RAID miniport driver synchronously to transfer, in accordance with the linked plurality of PIO data structures, I/O data corresponding to the I/O request between the storage controller and the storage array; and

synchronously performing interrupt operations to indicate completion of the I/O request to the host;

wherein executing the top layer and RAID core driver asynchronously comprises executing the top layer and RAID core driver without acquiring an interrupt lock and wherein executing the protocol layer synchronously comprises acquiring an interrupt lock before executing the protocol layer.

18. The computer readable medium of claim 17 , wherein executing the top layer and RAID core layer comprises calling the top layer and RAID core layer from a BuildIO routine of the storage driver of a small computer systems interface (SCSI) miniport driver.

19. The computer readable medium of claim 18 , wherein executing the protocol layer synchronously further includes calling a StartIO routine of the SCSI port miniport driver.

20. The computer readable medium of claim 17 , wherein the data structure associated with the I/O request comprises a SCSI request block (SRB) and wherein storing the pointer comprises storing the pointer within an SRBextension of the SRB.

Assignments (8)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (053546/0001) Recorded Jun 23, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC IP HOLDING COMPANY LLC
Reel/Frame 071642/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (042769/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO WYSE TECHNOLOGY L.L.C.)
Reel/Frame 059803/0802 →
RELEASE OF SECURITY INTEREST AT REEL 042768 FRAME 0585 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058297/0536 →
SECURITY AGREEMENT Recorded Apr 22, 2020
From: CREDANT TECHNOLOGIES INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 053546/0001 →
SECURITY AGREEMENT Recorded Mar 21, 2019
From: CREDANT TECHNOLOGIES, INC.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL USA L.P.; EMC CORPORATION; FORCE10 NETWORKS, INC.; WYSE TECHNOLOGY L.L.C.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A.
Reel/Frame 049452/0223 →
PATENT SECURITY INTEREST (CREDIT) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 042768/0585 →
PATENT SECURITY INTEREST (NOTES) Recorded Jun 12, 2017
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; MOZY, INC.; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 042769/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 23, 2017
From: KRISHNA, VEMURI SAI; KUNDU, ANIRBAN; JAIN, NAMAN
To: DELL PRODUCTS L.P.
Reel/Frame 041362/0781 →
Continuity (1)
Related Publication 20180239736A1 · Aug 23, 2018