IP Library Granted Patent US 11,435,955
Granted Patent B1
US 11,435,955 · App. 17/231,326 · Granted Sep 6, 2022

System and method for offloading copy processing across non-volatile memory express (NVMe) namespaces

Inventors: Prakash Venkatanarayanan (Bangalore, IN); David Lionel Black (Acton, MA); Dmitry Tylik (Westborough, MA)
Assignee: EMC IP HOLDING COMPANY, LLC
G06F3/0659G06F3/0605G06F3/067G06F3/0653G06F3/0679
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 11,435,955
App. No.
17/231,326
Granted
Sep 6, 2022
Kind
B1
Abstract

A method, computer program product, and computing system for receiving, at a host computing device, a request to copy data from a source Non-Volatile Memory Express (NVMe) namespace directly accessible by a source storage controller to a destination NVMe namespace directly accessible by a destination storage controller and may determine whether the destination storage controller can directly access the source NVMe namespace. In response to determining that the destination storage controller cannot directly access the source NVMe namespace, a first identifier associated with the data may be generated via the source storage controller. The first identifier may be provided to the host computing device. A data handle associated with the first identifier may be generated via the destination storage controller. The data may be copied, via the destination storage controller, from the source NVMe namespace to the destination NVMe namespace based upon, at least in part, the data handle.

Claims (48)

1. A computer-implemented method, executed on a computing device, comprising:

receiving, at a host computing device, a request to copy data from a source Non-Volatile Memory Express (NVMe) namespace directly accessible by a source storage controller to a destination NVMe namespace directly accessible by a destination storage controller;

determining whether the destination storage controller can directly access the source NVMe namespace; and

in response to determining that the destination storage controller cannot directly access the source NVMe namespace:

generating, via the source storage controller, a first identifier associated with the data;

providing the first identifier to the host computing device;

generating, via the destination storage controller, a data handle associated with the first identifier; and

copying, via the destination storage controller, the data from the source NVMe namespace to the destination NVMe namespace based upon, at least in part, the data handle.

2. The computer-implemented method of claim 1 , in response to determining that the destination storage controller can directly access the source NVMe namespace, sending, via the host computing device, the copy command to the destination storage controller with the source NVMe namespace.

3. The computer-implemented method of claim 1 , wherein the source NVMe namespace and the destination NVMe namespace are within the same NVM subsystem.

4. The computer-implemented method of claim 1 , wherein the source NVMe namespace and the destination NVMe namespace are within separate NVM subsystems.

5. The computer-implemented method of claim 1 , wherein generating, via the source storage controller, the first identifier associated with the data includes generating a representation of data (ROD) token associated with the data.

6. The computer-implemented method of claim 1 , wherein generating, via the destination storage controller, the data handle associated with the first identifier includes:

receiving, at the destination storage controller, a command from the host computing device to create the data handle, wherein the command includes the first identifier;

returning, via the destination storage controller, a data handle identifier associated with the data handle to the host computing device.

7. The computer-implemented method of claim 6 , wherein copying, via the destination storage controller, the data from the source NVMe namespace to the destination NVMe namespace based upon, at least in part, the data handle includes:

sending, via the host computing device, a copy command to the destination storage controller with the data handle identifier;

providing, via the destination storage controller, the first identifier to the source storage controller; and

in response to providing the first identifier to the source storage controller, copying, via the destination storage controller, the data from the source NVMe namespace to the destination NVMe namespace.

8. A computer program product residing on a non-transitory computer readable medium having a plurality of instructions stored thereon which, when executed by a processor, cause the processor to perform operations comprising:

receiving, at a host computing device, a request to copy data from a source Non-Volatile Memory Express (NVMe) namespace directly accessible by a source storage controller to a destination NVMe namespace directly accessible by a destination storage controller;

determining whether the destination storage controller can directly access the source NVMe namespace; and

in response to determining that the destination storage controller cannot directly access the source NVMe namespace:

generating, via the source storage controller, a first identifier associated with the data;

providing the first identifier to the host computing device;

generating, via the destination storage controller, a data handle associated with the first identifier; and

copying, via the destination storage controller, the data from the source NVMe namespace to the destination NVMe namespace based upon, at least in part, the data handle.

9. The computer program product of claim 8 , in response to determining that the destination storage controller can directly access the source NVMe namespace, sending, via the host computing device, the copy command to the destination storage controller with the source NVMe namespace.

10. The computer program product of claim 8 , wherein the source NVMe namespace and the destination NVMe namespace are within the same NVM subsystem.

11. The computer program product of claim 8 , wherein the source NVMe namespace and the destination NVMe namespace are within separate NVM subsystems.

12. The computer program product of claim 8 , wherein generating, via the source storage controller, the first identifier associated with the data includes generating a representation of data (ROD) token associated with the data.

13. The computer program product of claim 8 , wherein generating, via the destination storage controller, the data handle associated with the first identifier includes:

receiving, at the destination storage controller, a command from the host computing device to create the data handle, wherein the command includes the first identifier;

returning, via the destination storage controller, a data handle identifier associated with the data handle to the host computing device.

14. The computer program product of claim 13 , wherein copying, via the destination storage controller, the data from the source NVMe namespace to the destination NVMe namespace based upon, at least in part, the data handle includes:

sending, via the host computing device, a copy command to the destination storage controller with the data handle identifier;

providing, via the destination storage controller, the first identifier to the source storage controller; and

in response to providing the first identifier to the source storage controller, copying, via the destination storage controller, the data from the source NVMe namespace to the destination NVMe namespace.

15. A computing system comprising:

a memory; and

a processor configured to receive, at a host computing device, a request to copy data from a source Non-Volatile Memory Express (NVMe) namespace directly accessible by a source storage controller to a destination NVMe namespace accessible by a destination storage controller, wherein the processor is further configured to determine whether the destination storage controller can directly access the source NVMe namespace, wherein the processor is further configured to, in response to determining that the destination storage controller cannot directly access the source NVMe namespace, generate, via the source storage controller, a first identifier associated with the data, wherein the processor is further configured to provide the first identifier to the host computing device, wherein the processor is further configured to generate, via the destination storage controller, a data handle associated with the first identifier, and wherein the processor is further configured to copy, via the destination storage controller, the data from the source NVMe namespace to the destination NVMe namespace based upon, at least in part, the data handle.

16. The computing system of claim 15 , in response to determining that the destination storage controller can directly access the source NVMe namespace, sending, via the host computing device, the copy command to the destination storage controller with the source NVMe namespace.

17. The computing system of claim 15 , wherein the source NVMe namespace and the destination NVMe namespace are within the same NVM subsystem.

18. The computing system of claim 15 , wherein the source NVMe namespace and the destination NVMe namespace are within separate NVM subsystems.

19. The computing system of claim 15 , wherein generating, via the source storage controller, the first identifier associated with the data includes generating a representation of data (ROD) token associated with the data.

20. The computing system of claim 15 , wherein generating, via the destination storage controller, the data handle associated with the first identifier includes:

receiving, at the destination storage controller, a command from the host computing device to create the data handle, wherein the command includes the first identifier;

returning, via the destination storage controller, a data handle identifier associated with the data handle to the host computing device.

Assignments (10)
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (056295/0001) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 062021/0844 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (056295/0124) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 062022/0012 →
RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (056295/0280) Recorded Jun 10, 2022
From: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 062022/0255 →
RELEASE OF SECURITY INTEREST Recorded Nov 2, 2021
From: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
To: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
Reel/Frame 058297/0332 →
SECURITY INTEREST Recorded May 19, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 056295/0001 →
SECURITY INTEREST Recorded May 19, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 056295/0124 →
SECURITY INTEREST Recorded May 19, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT
Reel/Frame 056295/0280 →
CORRECTIVE ASSIGNMENT TO CORRECT THE MISSING PATENTS THAT WERE ON THE ORIGINAL SCHEDULED SUBMITTED BUT NOT ENTERED PREVIOUSLY RECORDED AT REEL: 056250 FRAME: 0541. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded May 17, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 056311/0781 →
SECURITY AGREEMENT Recorded May 14, 2021
From: DELL PRODUCTS L.P.; EMC IP HOLDING COMPANY LLC
To: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH
Reel/Frame 056250/0541 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 15, 2021
From: VENKATANARAYANAN, PRAKASH; BLACK, DAVID LIONEL; TYLIK, DMITRY
To: EMC IP HOLDING COMPANY, LLC
Reel/Frame 055930/0089 →
Cited By (1)
US 12,693,972