IP Library Granted Patent US 12,373,136
Granted Patent B2
US 12,373,136 · App. 18/355,793 · Granted Jul 29, 2025

Host storage command management for dynamically allocated namespace capacity in a data storage device to improve the quality of service (QOS)

Inventors: Pavan Gururaj (Bangalore, IN); Dinesh Babu (Bangalore, IN); Sridhar Sabesan (Bangalore, IN)
Assignee: Western Digital Technologies, Inc.
G06F3/0659G06F3/0607G06F3/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 12,373,136
App. No.
18/355,793
Granted
Jul 29, 2025
Kind
B2
Abstract

Systems, methods, and data storage devices for host storage command management for dynamically allocated floating namespaces are described. A data storage device may support multiple host namespaces allocated in its non-volatile storage medium and include a floating namespace pool that includes at least some data units from those host namespaces. Host storage commands to be processed using the floating namespace pool may be received and payload sizes may be determined. A next host storage command may be determined based on the relative payload sizes and executed using a data unit from the floating namespace pool, for example, based on allocating virtual command queues to the floating namespace pool and sorting the incoming host storage commands by payload size.

Claims (106)

1. A system, comprising:

a storage controller configured to:

allocate, for at least one data storage device from a plurality of data storage devices, a floating namespace pool comprised of a plurality of data units, wherein:

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

a non-volatile storage medium configured for a plurality of host namespaces; and

a host interface configured to receive host storage commands directed to that data storage device;

at least a portion of data units allocated to the plurality of host namespaces is allocated to the floating namespace pool; and

at least one data unit of the plurality of data units is allocated to a host namespace in the at least one data storage device;

determine a plurality of host storage commands directed to the at least one data storage device;

determine a payload size for each host storage command of the plurality of host storage commands;

determine, based on relative payload sizes of each host storage command of the plurality of host storage commands, a next host storage command from the plurality of host storage commands; and

execute, using a data unit in the floating namespace pool, the next host storage command.

2. The system of claim 1 , wherein the storage controller is further configured to expose the floating namespace pool as a host-managed device memory.

3. The system of claim 1 , wherein the storage controller is further configured to:

enable a virtual command queue for the floating namespace pool;

receive the plurality of host storage commands in the virtual command queue; and

sort the plurality of host storage commands based on the relative payload sizes to determine the next host storage command.

4. The system of claim 3 , wherein:

sorting the plurality of host storage commands places the plurality of host storage commands in size order from largest payload size to smallest payload size in the virtual command queue; and

the next host storage command has the largest payload size.

5. The system of claim 1 , wherein:

the storage controller is further configured to:

receive each host storage command of the plurality of host storage commands as a submission queue entry; and

determine whether each host storage command is a storage command type selected from:

a block storage command corresponding to a block payload size; and

a key storage command corresponding to a scatter gather list; and

determining the payload size for each host storage command is based on:

the block payload size for block storage commands; and

aggregation of entries of the scatter gather list for key storage commands.

6. The system of claim 5 , wherein:

the storage controller is further configured to:

assign, responsive to each submission queue entry, an initial priority to each host storage command; and

selectively modify, responsive to the payload size for each host storage command, the initial priority for selected host storage commands to a higher priority than the initial priority for that host storage command; and

determining the next host storage command is based on the higher priority for at least one host storage command.

7. The system of claim 6 , wherein the storage controller is further configured to:

determine a buffer allocation threshold for the host storage commands;

compare the payload size for each host storage command to the buffer allocation threshold; and

select host storage commands for the higher priority responsive to the payload size for that host storage command exceeding the buffer allocation threshold.

8. The system of claim 1 , wherein:

the floating namespace pool is allocated among a plurality of floating namespace volumes;

the storage controller is further configured to:

enable, for each floating namespace volume of the plurality of floating namespace volumes, a virtual command queue; and

allocate host storage commands across the virtual command queues of the plurality of floating namespace volumes; and

determining the next host storage command comprises selecting a host storage command from a next virtual command queue on a distributed basis among the virtual command queues of the plurality of floating namespace volumes.

9. The system of claim 8 , wherein:

the storage controller is further configured to:

enable a virtual channel for each virtual command queue of the plurality of floating namespace volumes;

sort the plurality of host storage commands by payload size; and

distribute the plurality of host storage commands in payload size order among the virtual command queues for the plurality of floating namespace volumes; and

the distributed basis comprises parallel processing of the virtual command queues for the plurality of floating namespace volumes using the corresponding virtual channels.

10. A computer-implemented method, comprising:

allocating, for at least one data storage device from a plurality of data storage devices, a floating namespace pool comprised of a plurality of data units, wherein:

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

a non-volatile storage medium configured for a plurality of host namespaces; and

a host interface configured to receive host storage commands directed to that data storage device;

at least a portion of data units allocated to the plurality of host namespaces is allocated to the floating namespace pool; and

at least one data unit of the plurality of data units is allocated to a host namespace in the at least one data storage device;

determining a plurality of host storage commands directed to the at least one data storage device;

determining a payload size for each host storage command of the plurality of host storage commands;

determining, based on relative payload sizes of each host storage command of the plurality of host storage commands, a next host storage command from the plurality of host storage commands; and

executing, using a data unit in the floating namespace pool, the next host storage command.

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

exposing the floating namespace pool as a host-managed device memory.

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

enabling a virtual command queue for the floating namespace pool;

receiving the plurality of host storage commands in the virtual command queue; and

sorting the plurality of host storage commands based on the relative payload sizes to determine the next host storage command.

13. The computer-implemented method of claim 12 , wherein:

sorting the plurality of host storage commands places the plurality of host storage commands in size order from largest payload size to smallest payload size in the virtual command queue; and

the next host storage command has the largest payload size.

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

receiving each host storage command of the plurality of host storage commands as a submission queue entry; and

determining whether each host storage command is a storage command type selected from:

a block storage command corresponding to a block payload size; and

a key storage command corresponding to a scatter gather list;

wherein determining the payload size for each host storage command is based on:

the block payload size for block storage commands; and

aggregation of entries of the scatter gather list for key storage commands.

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

assigning, responsive to each submission queue entry, an initial priority to each host storage command; and

selectively modifying, responsive to the payload size for each host storage command, the initial priority for selected host storage commands to a higher priority than the initial priority for that host storage command, wherein determining the next host storage command is based on the higher priority for at least one host storage command.

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

determining a buffer allocation threshold for the host storage commands;

comparing the payload size for each host storage command to the buffer allocation threshold; and

selecting host storage commands for the higher priority responsive to the payload size for that host storage command exceeding the buffer allocation threshold.

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

allocating the floating namespace pool among a plurality of floating namespace volumes;

enabling, for each floating namespace volume of the plurality of floating namespace volumes, a virtual command queue; and

allocating host storage commands across the virtual command queues of the plurality of floating namespace volumes, wherein determining the next host storage command comprises selecting a host storage command from a next virtual command queue on a distributed basis among the virtual command queues of the plurality of floating namespace volumes.

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

enabling a virtual channel and corresponding traffic channel for each virtual command queue of the plurality of floating namespace volumes;

sorting the plurality of host storage commands by payload size; and

distributing the plurality of host storage commands in payload size order among the virtual command queues for the plurality of floating namespace volumes, wherein the distributed basis comprises parallel processing of the virtual command queues for the plurality of floating namespace volumes using the corresponding virtual channels and traffic channels.

19. A system comprising:

at least one processor;

at least one memory;

a plurality of data storage devices, wherein:

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

a non-volatile storage medium configured for a plurality of host namespaces; and

a host interface configured to receive host storage commands directed to that data storage device; and

wherein at least a portion of data units allocated to the plurality of host namespaces is allocated to a floating namespace pool;

means for allocating, for at least one data storage device of the plurality of data storage devices, the floating namespace pool comprised of a plurality of data units;

means for determining a plurality of host storage commands directed to the at least one data storage device;

means for determining a payload size for each host storage command of the plurality of host storage commands;

means for determining, based on relative payload sizes of each host storage command of the plurality of host storage commands, a next host storage command from the plurality of host storage commands; and

means for executing, using a data unit in the floating namespace pool, the next host storage command.

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 Jul 20, 2023
From: GURURAJ, PAVAN; BABU, DINESH; SABESAN, SRIDHAR
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 064330/0105 →
Continuity (2)
Provisional Application 63510060 · Jun 23, 2023
Related Publication 20240427523A1 · Dec 26, 2024
References Cited (26)
US 6209066B1 · Holzle · 2001 [cited by applicant]
US 9047216B2 · Soran · 2015 [cited by applicant]
US 10564857B2 · Benisty · 2020 [cited by applicant]
US 10768820B2 · Subramanian · 2020 [cited by applicant]
US 10866740B2 · Benisty · 2020 [cited by applicant]
US 11429293B1 · Vankamamidi · 2022 [cited by applicant]
US 12106134B2 · Pinto · 2024 [cited by examiner]
US 20070168634A1 · Morishita · 2007 [cited by applicant]
US 20090234897A1 · Qi · 2009 [cited by applicant]
US 20130067186A1 · Pronovost · 2013 [cited by applicant]
US 20140250269A1 · Shanbhag · 2014 [cited by applicant]
US 20160124843A1 · Kanno · 2016 [cited by examiner]
US 20170024160A1 · Feldman · 2017 [cited by applicant]
US 20180217951A1 · Benisty · 2018 [cited by examiner]
US 20190121543A1 · Frolikov · 2019 [cited by applicant]
US 20200401348A1 · Satoyama · 2020 [cited by applicant]
US 20210103399A1 · Lyu · 2021 [cited by applicant]
US 20210334207A1 · Kanno · 2021 [cited by examiner]
US 20220137844A1 · Goss · 2022 [cited by examiner]
US 20220391091A1 · Frolikov · 2022 [cited by applicant]
US 20230058424A1 · Frolikov · 2023 [cited by applicant]
US 20230143076A1 · Clifton · 2023 [cited by applicant]
US 20230185476A1 · Bert · 2023 [cited by applicant]
US 20230418516A1 · Weiss · 2023 [cited by applicant]
US 20240303114A1 · Sabesan · 2024 [cited by applicant]
Junyi Shu, Ruidong Zhu, Yun Ma, Gang Huang, Hong Mei, Xuanzhe Liu, and Xin Jin. Mar. 25, 2023. Disaggregated RAID Storage in Modern Datacenters. In Proceedings of the 28th ACM International Conference on Architectural S… [cited by applicant]