IP Library Granted Patent US 12,366,994
Granted Patent B2
US 12,366,994 · App. 18/365,025 · Granted Jul 22, 2025

Multipath initiator for data storage device arrays

Inventors: Rahul Gandhi Dhatchinamoorthy (Bangalore, IN); Kumar Ranjan (Bangalore, IN); Senthil Kumar Veluswamy (Bangalore, IN)
Assignee: Western Digital Technologies, Inc.
G06F3/0659G06F3/0635G06F3/0679G06F3/0604
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 12,366,994
App. No.
18/365,025
Granted
Jul 22, 2025
Kind
B2
Abstract

Systems, methods, and a multipath initiator for a data storage device array that presents a single path host interface are described. The multipath initiator includes at least two backend paths to multiport data storage devices and a single path host interface. The initiator may determine a queue pair identifier for a host connection and storage commands to that host connection. The initiator may assign a path identifier, such as for a first backend path or a second backend path, to use for storage commands and send the storage commands to the data storage devices using the selected backend path.

Claims (145)

1. A system, comprising:

an initiator card comprising:

at least one processor;

at least one memory;

a storage interface configured to communicate with a plurality of data storage devices, wherein the storage interface comprises:

a first switch port configured for a first backend path through a first switch to a first storage device port of each data storage device of the plurality of data storage devices; and

a second switch port configured for a second backend path through a second switch to a second storage device port of each data storage device of the plurality of data storage devices;

a host interface comprising a host port configured to communicate with at least one host device; and

an interface controller configured to:

determine, for a first storage connection request from a host device, a first queue pair identifier assigned to a target data storage device in the plurality of data storage devices;

determine, for a first storage command to the first queue pair identifier, a first path identifier for a first selected backend path selected from:

the first backend path; and

the second backend path; and

send the first storage command to the target data storage device through the first selected backend path.

2. The system of claim 1 , wherein:

the interface controller is further configured to:

determine, for a second storage command to the first queue pair identifier, a second path identifier for a second selected backend path selected from:

the first backend path; and

the second backend path; and

send the second storage command to the target data storage device through the second selected backend path;

the first selected backend path is the first backend path; and

the second selected backend path is the second backend path.

3. The system of claim 1 , wherein:

the interface controller comprises a queue pair mapping data structure comprised of a plurality of mapping entries;

each mapping entry of the plurality of mapping entries comprises:

a queue pair identifier for a corresponding host connection to the plurality of data storage devices; and

a backend path identifier for that corresponding host connection;

the plurality of mapping entries include includes a first mapping entry for the first queue pair identifier; and

the backend path identifiers are selected from:

a first backend path identifier for the first backend path; and

a second backend path identifier for the second backend path.

4. The system of claim 3 , wherein:

the interface controller is further configured to:

assign, during a first operating period, the backend path identifier for each mapping entry of the plurality of mapping entries in a first path configuration; and

reassign, during a second operating period, the backend path identifier for each mapping entry of the plurality of mapping entries in a second path configuration;

a first portion of the plurality of mapping entries is configured to receive the first backend path identifier during the first operating period;

a second portion of the plurality of mapping entries is configured to receive the first backend path identifier during the second operating period; and

the first portion and the second portion are different sets of the plurality of mapping entries.

5. The system of claim 3 , wherein:

the interface controller is further configured to assign, based on a multipath policy, the backend path identifier for each mapping entry of the plurality of mapping entries;

a first portion of the plurality of mapping entries is configured to receive the first backend path identifier; and

a second portion of the plurality of mapping entries is configured to receive the second backend path identifier.

6. The system of claim 5 , wherein the multipath policy is configured to distribute the first portion of the plurality of mapping entries alternating with the second portion of the plurality of mapping entries.

7. The system of claim 5 , wherein the multipath policy is configured to distribute the first portion of the plurality of mapping entries randomly among the second portion of the plurality of mapping entries.

8. The system of claim 3 , wherein the interface controller is further configured to:

determine a failure condition for the first backend path; and

reassign, responsive to the failure condition, the backend path identifier for each mapping entry with the first backend path identifier to the second backend path identifier.

9. The system of claim 1 , wherein:

the interface controller comprises an administrative queue pair mapping data structure comprised of a plurality of administrative mapping entries;

each administrative mapping entry of the plurality of administrative mapping entries comprises:

a queue pair identifier for a corresponding host administrative connection to the plurality of data storage devices; and

a backend path identifier for that corresponding host administrative connection;

the backend path identifiers are selected from:

a first backend path identifier for the first backend path; and

a second backend path identifier for the second backend path; and

the interface controller is further configured to:

determine usage metrics for the first backend path and the second backend path;

compare the usage metrics of the first backend path and the second backend path to determine which backend path is a least used path; and

assign, responsive to determination of the least used path, the backend path identifier for at least one administrative mapping entry to the backend path identifier for the least used path.

10. The system of claim 1 , further comprising:

the plurality of data storage devices, wherein each data storage device of the plurality of data storage devices comprises:

a non-volatile storage medium;

the first storage device port configured for connection to the first backend path; and

the second storage device port configured for connection to the second backend path;

the first switch configured for the first backend path between the first switch port and the first storage device ports of the plurality of data storage devices; and

the second switch configured for the second backend path between the second switch port and the second storage device ports of the plurality of data storage devices.

11. A computer-implemented method, comprising:

configuring, from a storage interface initiator, a first backend path to a first storage device port of each data storage device of a plurality of data storage devices;

configuring, from the storage interface initiator, a second backend path to a second storage device port of each data storage device of the plurality of data storage devices;

configuring a plurality of mapping entries in a queue pair mapping data structure, wherein:

each mapping entry of the plurality of mapping entries comprises:

a queue pair identifier for a corresponding host connection to the plurality of data storage devices; and

a backend path identifier for that corresponding host connection;

the plurality of mapping entries includes a first mapping entry for a first queue pair identifier; and

the backend path identifiers are selected from:

a first backend path identifier for the first backend path; and

a second backend path identifier for the second backend path;

determining, for a first storage connection request from a host device, the first queue pair identifier assigned to a target data storage device in the plurality of data storage devices;

determining, for a first storage command to the first queue pair identifier, a first path identifier for a first selected backend path selected from:

the first backend path; and

the second backend path; and

sending the first storage command to the target data storage device through the first selected backend path.

12. The computer-implemented method of claim 11 , further comprising:

determining, for a second storage command to the first queue pair identifier, a second path identifier for a second selected backend path selected from:

the first backend path; and

the second backend path; and

sending the second storage command to the target data storage device through the second selected backend path, wherein:

the first selected backend path is the first backend path; and

the second selected backend path is the second backend path.

13. The computer-implemented method of claim 11 , further comprising:

determining, based on the host connection corresponding to the first storage command, the first queue pair identifier, wherein determining the first path identifier comprises:

using the first queue pair identifier to lookup the first mapping entry; and

determining the first path identifier from the backend path identifier in the first mapping entry.

14. The computer-implemented method of claim 11 , further comprising:

assigning, during a first operating period, the backend path identifier for each mapping entry of the plurality of mapping entries in a first path configuration; and

reassigning, during a second operating period, the backend path identifier for each mapping entry of the plurality of mapping entries in a second path configuration, wherein:

a first portion of the plurality of mapping entries receives the first backend path identifier during the first operating period;

a second portion of the plurality of mapping entries receives the first backend path identifier during the second operating period; and

the first portion and the second portion are different sets of the plurality of mapping entries.

15. The computer-implemented method of claim 11 , further comprising:

assigning, based on a multipath policy, the backend path identifier for each mapping entry of the plurality of mapping entries, wherein:

a first portion of the plurality of mapping entries receives the first backend path identifier; and

a second portion of the plurality of mapping entries receives the second backend path identifier.

16. The computer-implemented method of claim 15 , further comprising:

distributing, based on the multipath policy, the first portion of the plurality of mapping entries alternating with the second portion of the plurality of mapping entries.

17. The computer-implemented method of claim 15 , further comprising:

distributing, based on the multipath policy, the first portion of the plurality of mapping entries randomly among the second portion of the plurality of mapping entries.

18. The computer-implemented method of claim 11 , further comprising:

determining a failure condition for the first backend path; and

reassigning, responsive to the failure condition, the backend path identifier for each mapping entry with the first backend path identifier to the second backend path identifier.

19. The computer-implemented method of claim 11 , further comprising:

configuring a plurality of administrative mapping entries in an administrative queue pair mapping data structure, wherein:

each administrative mapping entry of the plurality of administrative mapping entries comprises:

a queue pair identifier for a corresponding host administrative connection to the plurality of data storage devices; and

a backend path identifier for that corresponding host administrative connection; and

the backend path identifiers are selected from:

a first backend path identifier for the first backend path;

a second backend path identifier for the second backend path; and

determining usage metrics for the first backend path and the second backend path;

comparing the usage metrics of the first backend path and the second backend path to determine which backend path is a least used path; and

assigning, responsive to determination of the least used path, the backend path identifier for at least one administrative mapping entry to the backend path identifier for the least used path.

20. A storage system comprising:

at least one processor;

at least one memory;

a host interface configured to communicate with at least one host device;

a plurality of data storage devices;

a storage interface configured to communicate with the plurality of data storage devices,

wherein the storage interface comprises:

a first backend path to a first storage device port of each data storage device of the plurality of data storage devices; and

a second backend path to a second storage device port of each data storage device of the plurality of data storage devices;

means for configuring a plurality of administrative mapping entries in an administrative queue pair mapping data structure, wherein:

each administrative mapping entry of the plurality of administrative mapping entries comprises:

a queue pair identifier for a corresponding host administrative connection to the plurality of data storage devices; and

a backend path identifier for that corresponding host administrative connection; and

the backend path identifiers are selected from:

a first backend path identifier for the first backend path; and

a second backend path identifier for the second backend path;

means for determining usage metrics for the first backend path and the second backend path;

means for comparing the usage metrics of the first backend path and the second backend path to determine which backend path is a least used path;

means for assigning, responsive to determination of the least used path, the backend path identifier for at least one administrative mapping entry to the backend path identifier for the least used path;

means for determining, for a first storage connection request from a host device, a first queue pair identifier assigned to a target data storage device in the plurality of data storage devices;

means for determining, for a first storage command to the first queue pair identifier, a first path identifier for a first selected backend path selected from:

the first backend path; and

the second backend path; and

means for sending the first storage command to the target data storage device through the first selected backend path.

Assignments (3)
PATENT COLLATERAL AGREEMENT- A&R Recorded Nov 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 065656/0649 →
PATENT COLLATERAL AGREEMENT - DDTL Recorded Nov 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 065657/0158 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 3, 2023
From: DHATCHINAMOORTHY, RAHUL GANDHI; RANJAN, KUMAR; VELUSWAMY, SENTHIL KUMAR
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 064489/0293 →
Continuity (2)
Provisional Application 63510045 · Jun 23, 2023
Related Publication 20240427524A1 · Dec 26, 2024
References Cited (3)
US 11100024B2 · Olarig et al. · 2021 [cited by applicant]
US 11366771B2 · Smith · 2022 [cited by examiner]
US 11567883B2 · Veluswamy · 2023 [cited by examiner]