IP Library › Granted Patent US 9,870,162
Granted Patent B2
US 9,870,162 · App. 15/074,452 · Granted Jan 16, 2018

Method to virtualize PCIe controllers to support boot/hibernation/crash-dump from a spanned virtual disk

Inventors: Anirban Kundu (Bangalore, IN); Abhijit Rajkumar Khande (Bangalore, IN); Krishna Kumar P.K. (Bangalore, IN)
Assignee: Dell Products L.P.
G06F3/0619G06F3/0665G06F3/0688G06F3/0689G06F9/4401G06F13/24G06F13/4282G06F2213/0026
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,870,162
App. No.
15/074,452
Filed
Mar 18, 2016
Granted
Jan 16, 2018
Kind
B2
Examiner
SUN, MICHAEL
Art Unit
2184
USPC
710/313
Abstract

An information handling system recognizes PCIe-based RAID volumes, including RAID virtual disks spanning two or more NVMe storage drives, while performing boot, hibernation, and crash-dump functions, rather than treating each storage device and its corresponding storage controller separately. The information handling system may perform a two-tiered discovery/initialization process during which a storage protocol function driver detects and initializes physical storage controllers, a storage controller bus driver virtualizes all physical storage controllers of a particular storage protocol and exposes a single virtualized storage controller for the protocol. A virtual miniport driver may then detect RAID volumes associated with the virtual storage controller and initialize the detected RAID stack(s).

Claims (86)

1. A method, comprising:

associating each physical storage controller coupled to a bus with a protocol function driver;

performing a first initialization comprising initializing each physical storage controller with its protocol function driver;

virtualizing all physical storage controllers of a particular protocol with a storage controller bus driver and exposing a single virtual storage controller for each particular protocol;

associating a virtual miniport driver with each of the virtual storage controllers;

performing a second initialization comprising initializing each of the virtual storage controllers with its associated virtual miniport driver;

identifying redundant array of independent drives (RAID) virtual disks associated with the virtual storage controllers;

responsive to receiving a request for logical unit (LUN) information, exposing the RAID virtual disks;

associating a disk driver with each of the RAID virtual disks; and

exposing the RAID virtual disks to users.

2. The method of claim 1 , further comprising:

sending, to a port driver, an input/output (I/O) request for a particular LUN associated with a virtual RAID controller;

routing, by the port driver, the I/O request to a particular virtual miniport driver associated with the virtual RAID controller;

generating, by the particular virtual miniport driver, a plurality of I/O request packets in accordance with a RAID level of the virtual RAID controller;

sending, by an I/O manager, the plurality of information request packets (IRPs) to the storage controller bus driver;

identifying, by the storage controller bus driver, storage protocol function driver objects corresponding to the plurality of IRP's; and

sending, by the I/O manager, the plurality of IRPs to the storage protocol function drivers.

3. The method of claim 1 , further comprising:

responsive to receiving an indication of command completion from hardware associated with the storage protocol function driver, calling an interrupt service routine registered by the storage protocol function driver.

4. The method of claim 3 , further comprising:

responsive to receiving an indication of command completion from the interrupt service routine registered by the storage protocol function driver, calling an interrupt service routine registered by the storage controller bus driver.

5. The method of claim 4 , further comprising:

responsive to receiving an indication of command completion from the interrupt service routine registered by the storage controller bus driver, calling an interrupt service routine associated with the virtual miniport driver.

6. The method of claim 5 , wherein the interrupt service routine associated with the virtual miniport driver is configured to:

process command completions for individual IRPs received; and

perform any error handling required.

7. The method of claim 1 , further comprising:

loading a crash dump driver to obtain crash dump stack information;

querying a disk driver to obtain boot disk information indicative of a boot disk;

identifying a dump port driver associated with the boot disk;

sending an I/O control code to the dump port driver to obtain miniport dump driver information and other hibernation crash dump drivers;

loading a storage controller bus driver and obtaining crash hibernation context information;

storing information for the virtual storage controller associated with the boot LUN into the dump context;

loading storage protocol function driver information to obtain crash dump hibernation context information; and

storing peripheral component interconnect (PCI) configuration space of storage controllers associated with a boot LUN into a dump context.

8. The method of claim 7 , further comprising:

responsive to detecting a crash dump or hibernation trigger, invoking the crash dump driver;

obtaining boot device information from the stored dump context;

loading, by the crash dump driver, a dump storage controller bus (SCB) driver and a dump storage protocol function (SPF) driver;

initializing, by the dump SPF driver, storage controllers associated with the boot LUN;

registering, by the dump SPF driver, callbacks for communicating with the dump SCB driver;

identifying, by the dump SCB driver, a virtual storage controller associated with the boot LUN;

creating a single virtual protocol controller for each particular protocol;

loading a dump port driver and a dump miniport driver;

registering, by the dump virtual miniport driver, callbacks for communication with the dump SCB driver;

requesting, by the dump port driver, initialization of the virtual storage controller;

initializing, by the dump virtual miniport driver, the virtual storage controller and a RAID core;

obtaining, from the dump SCB driver and the dump SPF driver, metadata indicative of virtual RAID disks associated with the virtual storage controllers;

obtaining, by the dump port driver, INQUIRY data for the boot LUN; and

processing a WRITE request for a dump file.

9. The method of claim 8 , wherein processing the dump file includes:

generating, by the dump port driver, WRITE SCSI request blocks (SRBs) for the RAID virtual disk;

sending the WRITE SRBs to the dump virtual miniport driver;

generating WRITE I/O requests in accordance with the RAID level for the boot LUN;

sending the WRITE I/O requests to the dump SCB driver;

identifying, by the dump SCB driver, virtual storage controllers associated with the WRITE I/O requests;

forwarding, via the callbacks, the write I/O requests to the dump SPF driver; and

sending, via callbacks, the WRITE I/O requests to disks associated with the dump SPF driver.

10. An information handling system, comprising:

a processor; and

a computer readable medium, including processor executable instructions for performing device stack operations comprising:

establishing a driver stack including:

a physical device object for each physical storage controller coupled to a PCI bus;

a protocol functional driver object (FDO) corresponding to each physical device object;

a storage controller bus driver FDO coupled to each of the protocol FDOs and configured to expose a single virtual controller physical device object (PDO) for each of a plurality of storage protocols;

a virtual miniport driver FDO coupled to each virtual controller PDO

a storport FDO coupled to each of the virtual miniport FDOs and further configured to expose a virtual disk PDO corresponding to each of the virtual miniport driver FDOs; and

a disk driver FDO associated with each of the virtual disk PDOs.

11. The information handling system of claim 10 , wherein the physical storage controllers include first storage controllers associated with a first storage protocol and second storage controllers associated with a second storage protocol.

12. The information handling system of claim 11 , wherein the first storage controllers include non-volatile memory express (NVMe) storage controllers.

13. The information handling system of claim 12 , wherein the virtual disk PDO corresponds to a redundant array of independent drives (RAID) virtual disk spanning a plurality of physical NVMe storage controllers.

14. The information handling system of claim 13 , wherein the RAID virtual disk includes a boot logical unit (LUN).

15. The information handling system of claim 12 , wherein the second storage controllers comprise serial AT attachment (SATA) storage controllers.

16. The information handling system of claim 10 , wherein the operations include:

establishing a crash dump/hibernation stack including a dump port driver, a dump virtual miniport driver, a dump storage controller bus driver, and a dump storage protocol function driver; and

registering function call backs enabling the dump virtual miniport driver, the dump storage protocol function driver and the dump storage controller bus driver to communicate during crash or hibernation.

17. A computer readable storage medium including processor executable instructions that, when executed, cause the processor to perform operations including:

discovering and initializing, by a storage protocol function driver, physical storage controllers coupled to a bus;

exposing, by a storage controller bus driver, a protocol-specific virtual controller, corresponding to all physical storage controllers of a particular protocol, to a virtual miniport driver;

initializing, by the virtual miniport driver, the protocol-specific virtual controller and discovering a redundant array of independent drives (RAID) virtual disk associated with the protocol-specific virtual controller, wherein the RAID virtual disk spans a plurality of the physical storage controllers of the particular protocol; and

responsive to receiving a request for logical units (LUNs) from a storport driver, exposing, by the virtual miniport driver, the RAID virtual disk to the storport driver.

18. The computer readable medium of claim 17 , wherein the RAID virtual disk corresponds to a boot device.

19. The computer readable medium of claim 18 , wherein the RAID virtual disk spans a plurality of non-volatile memory express (NVMe) storage controllers.

20. The computer readable medium of claim 17 , wherein the operations include:

establishing a crash dump/hibernation stack including a dump port driver, a dump virtual miniport driver, a dump storage controller bus driver, and a dump storage protocol function driver; and

registering function call backs enabling the dump virtual miniport driver, the dump storage protocol function drier and the dump storage controller bus driver to communicate during crash or hibernation.

Assignments (15)
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 (045455/0001) Recorded May 20, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061753/0001 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (040136/0001) Recorded Apr 26, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO ASAP SOFTWARE EXPRESS, INC.); DELL MARKETING L.P. (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO CREDANT TECHNOLOGIES, INC.); DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL PRODUCTS L.P.; DELL MARKETING CORPORATION (SUCCESSOR-IN-INTEREST TO FORCE10 NETWORKS, INC. AND WYSE TECHNOLOGY L.L.C.); EMC CORPORATION (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MAGINATICS LLC); EMC IP HOLDING COMPANY LLC (ON BEHALF OF ITSELF AND AS SUCCESSOR-IN-INTEREST TO MOZY, INC.); SCALEIO LLC
Reel/Frame 061324/0001 →
RELEASE OF SECURITY INTEREST Recorded Nov 3, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL, L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; WYSE TECHNOLOGY L.L.C.
Reel/Frame 058216/0001 →
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 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 040134/0001 →
SECURITY AGREEMENT Recorded Sep 21, 2016
From: ASAP SOFTWARE EXPRESS, INC.; AVENTAIL LLC; CREDANT TECHNOLOGIES, INC.; DELL USA L.P.; DELL INTERNATIONAL L.L.C.; DELL MARKETING L.P.; DELL PRODUCTS L.P.; DELL SOFTWARE INC.; DELL SYSTEMS CORPORATION; EMC CORPORATION; EMC IP HOLDING COMPANY LLC; FORCE10 NETWORKS, INC.; MAGINATICS LLC; MOZY, INC.; SCALEIO LLC; SPANNING CLOUD APPS LLC; WYSE TECHNOLOGY L.L.C.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 040136/0001 →
RELEASE OF REEL 038664 FRAME 0908 (NOTE) Recorded Sep 14, 2016
From: BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; SECUREWORKS, CORP.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040027/0390 →
RELEASE OF REEL 038665 FRAME 0041 (TL) Recorded Sep 14, 2016
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; SECUREWORKS, CORP.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040028/0375 →
RELEASE OF REEL 038665 FRAME 0001 (ABL) Recorded Sep 13, 2016
From: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
To: DELL SOFTWARE INC.; DELL PRODUCTS L.P.; SECUREWORKS, CORP.; WYSE TECHNOLOGY L.L.C.
Reel/Frame 040021/0348 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (NOTES) Recorded May 11, 2016
From: DELL SOFTWARE INC.; WYSE TECHNOLOGY, L.L.C.; DELL PRODUCTS L.P.
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS FIRST LIEN COLLATERAL AGENT
Reel/Frame 038664/0908 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (TERM LOAN) Recorded May 11, 2016
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; WYSE TECHNOLOGY, L.L.C.
To: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
Reel/Frame 038665/0041 →
SUPPLEMENT TO PATENT SECURITY AGREEMENT (ABL) Recorded May 11, 2016
From: DELL PRODUCTS L.P.; DELL SOFTWARE INC.; WYSE TECHNOLOGY, L.L.C.
To: BANK OF AMERICA, N.A., AS ADMINISTRATIVE AGENT
Reel/Frame 038665/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 21, 2016
From: KUNDU, ANIRBAN; KHANDE, ABHIJIT RAJKUMAR; P.K., KRISHNA KUMAR
To: DELL PRODUCTS L.P.
Reel/Frame 038053/0667 →
Continuity (1)
Related Publication 20170269857A1 · Sep 21, 2017