IP Library Granted Patent US 9,983,896
Granted Patent B1
US 9,983,896 · App. 14/985,960 · Granted May 29, 2018

Lun with zero storage as a protocol endpoint

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,983,896
App. No.
14/985,960
Granted
May 29, 2018
Kind
B1
Abstract

A method includes (a) receiving a setup command directing a computing device to create a protocol endpoint to allow a remote host device to access storage volumes of the computing device presented to the remote host through the protocol endpoint as virtual storage volumes, (b) in response to receiving the setup command, creating a logical storage device object representing the protocol endpoint, the logical storage device object having zero underlying storage capacity, (c) subsequent to creating the logical storage device object, receiving a command directed at the protocol endpoint, and (d) in response to receiving the command, processing the command by a driver stack on the computing device containing the logical storage device object representing the protocol endpoint, the driver stack being shorter than another driver stack on the computing device used to process storage commands directed at another logical storage device object having non-zero underlying storage.

Claims (74)

1. A computer-implemented method performed by a computing device, the method comprising:

receiving a setup command directing the computing device to create a protocol endpoint on the computing device to allow a remote host device to access storage volumes of the computing device presented to the remote host through the protocol endpoint as virtual storage volumes; in response to receiving the setup command, creating a logical storage device object representing the protocol endpoint, the logical storage device object having zero underlying storage capacity;

subsequent to creating the logical storage device object, receiving a command directed at the protocol endpoint; and

in response to receiving the command, processing the command by a driver stack on the computing device containing the logical storage device object representing the protocol endpoint, the driver stack being shorter than another driver stack on the computing device used to process storage commands directed at another logical storage device object having non-zero underlying storage.

2. The method of claim 1 wherein the driver stack includes:

a top level driver configured to present logical storage devices to the remote host;

a redirector driver below the top level driver, the redirector driver configured to redirect storage commands between a first storage processor of the computing device and a second storage processor of the computing device; and

a loop-back module configured to emulate the existence of a low-level storage driver that controls access to storage of the computing device without performing the functionality of the low-level storage driver.

3. The method of claim 2 wherein the other driver stack includes:

the top level driver;

the redirector driver below the top level driver; and

the low-level storage driver below the redirector driver.

4. The method of claim 3 wherein:

the command is a bind command from the remote host device directing the protocol endpoint to present a new virtual storage volume to the remote host; and

processing the command by the driver stack includes:

creating a new logical storage device object having non-zero underlying storage, the new logical storage device object being managed by the other driver stack, the low-level storage driver of the other storage stack mapping the new logical storage device object to a RAID group of the computing device; and

presenting, by the top level driver of the driver stack, the new logical storage device object to the remote host through the protocol endpoint as the new virtual storage volume.

5. The method of claim 4 wherein the method further comprises:

receiving a storage command directed to the new virtual storage volume;

propagating the received storage command down the other driver stack for fulfillment by the low-level storage driver of the other storage stack;

upon the received storage command reaching the low-level storage driver, determining that the RAID group of the computing device is faulted; and

in response to determining that the RAID group of the computing device is faulted, propagating a failure response up the other driver stack.

6. The method of claim 5 wherein the method further comprises:

receiving another command directed to the protocol endpoint;

propagating the received other command down the driver stack; and

upon the received other command reaching the loop-back module, propagating a successful response up the driver stack although the RAID group of the computing device remains faulted.

7. The method of claim 1 wherein:

the command is a command from the remote host device directing the protocol endpoint to report on the virtual storage volumes it is presenting to the remote host; and

processing the command by the driver stack includes returning identification information regarding each virtual storage volume that the protocol endpoint is configured to present to the remote host.

8. An apparatus comprising:

network interface circuitry for communicating with a remote host over a network connection;

I/O circuitry for communicating with persistent storage;

and

processing circuitry coupled to memory configured to perform the following operations:

receiving a setup command directing the apparatus to create a protocol endpoint to allow the remote host device to access storage volumes of the apparatus presented to the remote host through the protocol endpoint as virtual storage volumes;

in response to receiving the setup command, creating a logical storage device object representing the protocol endpoint, the logical storage device object having zero underlying storage capacity;

subsequent to creating the logical storage device object, receiving a command directed at the protocol endpoint; and

in response to receiving the command, processing the command by a driver stack running on the processing circuitry containing the logical storage device object representing the protocol endpoint, the driver stack being shorter than another driver stack running on the processing circuitry used to process storage commands directed at another logical storage device object having non-zero underlying storage.

9. The apparatus of claim 8 wherein:

the processing circuitry coupled to memory is mounted on a first storage processor board of the apparatus;

the apparatus further comprises;

a second storage processor board having additional processing circuitry coupled to memory; and

an inter-processor interconnect communicatively connecting the first storage processor and the second storage processor; and

the driver stack includes:

a top level driver running on the processing circuitry configured to present logical storage devices to the remote host;

a redirector driver running on the processing circuitry below the top level driver, the redirector driver configured to redirect storage commands between the first storage processor and the second storage processor across the inter-processor interconnect; and

a loop-back module running on the processing circuitry configured to emulate the existence of a low-level storage driver that controls access to the persistent storage via the I/O circuitry without performing the functionality of the low-level storage driver.

10. The apparatus of claim 9 wherein the other driver stack includes:

the top level driver;

the redirector driver below the top level driver; and

the low-level storage driver below the redirector driver.

11. The apparatus of claim 10 wherein:

the command is a bind command from the remote host device directing the protocol endpoint to present a new virtual storage volume to the remote host; and

processing the command by the driver stack includes:

creating a new logical storage device object having non-zero underlying storage, the new logical storage device object being managed by the other driver stack, the low-level storage driver of the other storage stack mapping the new logical storage device object to a RAID group of the persistent storage; and

presenting, by the top level driver of the driver stack, the new logical storage device object to the remote host through the protocol endpoint as the new virtual storage volume.

12. The apparatus of claim 11 wherein the processing circuitry coupled to memory is further configured to perform the following operations:

receiving a storage command directed to the new virtual storage volume;

propagating the received storage command down the other driver stack for fulfillment by the low-level storage driver of the other storage stack;

upon the received storage command reaching the low-level storage driver, determining that the RAID group of the persistent storage is faulted; and

in response to determining that the RAID group is faulted, propagating a failure response up the other driver stack.

13. The apparatus of claim 12 wherein the processing circuitry coupled to memory is further configured to perform the following operations:

receiving another command directed to the protocol endpoint;

propagating the received other command down the driver stack; and

upon the received other command reaching the loop-back module, propagating a successful response up the driver stack although the RAID group remains faulted.

14. The apparatus of claim 8 wherein:

the command is a command from the remote host device directing the protocol endpoint to report on the virtual storage volumes it is presenting to the remote host; and

processing the command by the driver stack includes returning identification information regarding each virtual storage volume that the protocol endpoint is configured to present to the remote host.

15. A computer program product comprising a non-transitory computer-readable storage medium storing a set of instructions, which, when executed by the computing device, cause the computing device to perform the following operations:

receiving a setup command directing the computing device to create a protocol endpoint on the computing device to allow a remote host device to access storage volumes of the computing device presented to the remote host through the protocol endpoint as virtual storage volumes;

in response to receiving the setup command, creating a logical storage device object representing the protocol endpoint, the logical storage device object having zero underlying storage capacity;

subsequent to creating the logical storage device object, receiving a command directed at the protocol endpoint; and

in response to receiving the management command, processing the command by a driver stack on the computing device containing the logical storage device object representing the protocol endpoint, the driver stack being shorter than another driver stack on the computing device used to process storage commands directed at another logical storage device objects having non-zero underlying storage.

16. The method of claim 2 wherein the loop-back module is further configured to always return a successful response up to the redirector driver.

Assignments (10)
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 (047648/0422) Recorded May 20, 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
Reel/Frame 060160/0862 →
RELEASE OF SECURITY INTEREST AT REEL 047648 FRAME 0346 Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
Reel/Frame 058298/0510 →
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 AGREEMENT (NOTES) Recorded Oct 12, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS COLLATERAL AGENT
Reel/Frame 047648/0422 →
PATENT SECURITY AGREEMENT (CREDIT) Recorded Oct 12, 2018
From: DELL PRODUCTS L.P.; EMC CORPORATION; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, AS COLLATERAL AGENT
Reel/Frame 047648/0346 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 3, 2017
From: EMC CORPORATION
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 041872/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 16, 2017
From: HARVEY, DAVID W.
To: EMC IP HOLDING COMPANY LLC
Reel/Frame 041279/0479 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 6, 2017
From: NAIK, DILESH; LEE, SHUYU; SCHIFF, JEAN
To: EMC CORPORATION
Reel/Frame 041180/0916 →