IP Library Granted Patent US 10,402,092
Granted Patent B2
US 10,402,092 · App. 15/170,106 · Granted Sep 3, 2019

Resizing namespaces for storage devices

Inventors: Dylan Mark Dewitt (Rochester, MN); Piyush Garg (Irvine, CA)
Assignee: WESTERN DIGITAL TECHNOLOGIES, INC.
G06F3/0605G06F3/064G06F3/0619G06F3/0631G06F3/0659G06F3/0665G06F3/0673G06F12/0238G06F12/0284G06F12/0292G06F2212/1032G06F2212/651G06F2212/657G06F2212/7201G06F2212/7205G06F2212/7206
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 10,402,092
App. No.
15/170,106
Granted
Sep 3, 2019
Kind
B2
Abstract

A method may include receiving, by a controller of a storage device and from a host device, a command to resize a first namespace of a plurality of namespaces stored in a non-volatile memory device of the storage device. The method may further include, relocating, by the controller, a physical block address for the non-volatile memory device from an entry in a virtual to physical table identified by a first index value to an entry in the virtual to physical table identified by a second index value, and in response to relocating the physical block address, updating, by the controller, a mapping, by a namespace table, to indicate an initial index value of a second namespace of the plurality of namespaces.

Claims (75)

1. A method comprising:

receiving, by a controller of a storage device and from a host device, a command to resize a first namespace of a plurality of namespaces stored in a non-volatile memory device of the storage device; and

in response to receiving the command to resize the first namespace:

relocating, by the controller, a physical block address for the non-volatile memory device from an entry in a virtual to physical table identified by a first index value to an entry in the virtual to physical table identified by a second index value, wherein the relocating includes moving the entire physical block address; and

in response to relocating the physical block address, updating, by the controller, a mapping, by a namespace table, to indicate an initial index value of a second namespace of the plurality of namespaces to include abutting index values in the virtual to physical table, wherein the namespace table and the virtual to physical table are separate tables, wherein the namespace table includes a namespace identifier that is mapped, by the namespace table, to a corresponding starting virtual to physical index value and to a corresponding namespace size, and wherein each of the namespace sizes represents a specific and separate entry in the namespace table.

2. The method according to claim 1 , wherein:

the first namespace is associated with a first set of contiguous index values of the virtual to physical table; and

the second namespace is associated with a second set of contiguous index values of the virtual to physical table, the second set of contiguous index values starting with the initial index value indicated by the second table after relocating the physical block address.

3. The method according to claim 2 , wherein:

the command to resize indicates adding a quantity of physical block addresses to the first set of contiguous index values for the first namespace, and

relocating the physical block address comprises moving the second set of contiguous index values for the second namespace within the virtual to physical table away from the first contiguous index values to permit adding the quantity of physical block addresses to the first set of contiguous index values for the first namespace.

4. The method according to claim 3 , comprising:

determining, by the controller, whether one or more intermediate index values in the virtual to physical table permit adding the quantity of physical block addresses to the first set of contiguous index values for the first namespace,

wherein the one or more intermediate index values are positioned between the first set of contiguous index values and the second set of contiguous index values, and

wherein relocating the physical block address is in response to determining that the one or more intermediate index values in the virtual to physical table do not permit adding the quantity of physical block addresses to the first set of contiguous index values for the first namespace.

5. The method according to claim 2 , wherein:

the command to resize indicates reducing a quantity of physical block addresses of the first set of contiguous index values for the first namespace, and

relocating the physical block address comprises moving the second set of contiguous index values for the second namespace within the virtual to physical table towards the first contiguous index values.

6. The method according to claim 2 , wherein relocating the physical block address comprises:

moving, by the controller, the second set of contiguous index values for the second namespace within the virtual to physical table from a corresponding set of index values of the virtual to physical table to another corresponding set of index values of the virtual to physical table; and

preventing, by the controller, access to read and write to the second namespace while moving the second set of contiguous index values for the second namespace within the virtual to physical table.

7. The method according to claim 1 , wherein data stored at a physical block address of the non-volatile memory device of the storage device includes a tag indicating the namespace identifier and an offset, the method further comprising:

determining, by the controller, an index value of the virtual to physical table corresponding with the physical block address by:

determining, by the controller, a base index value for the physical block address using the namespace table and the namespace identifier indicated in the tag; and

adding, by the controller, the offset to the base index value.

8. The method according to claim 1 , wherein:

the virtual to physical table is stored in a first memory of the controller,

the namespace table is stored in a second memory of the controller, and

the second memory of the controller has a faster input/output speed than the first memory.

9. A storage device comprising:

a storage element; and

a controller configured to:

receive, from a host device, a command to resize a first namespace of a plurality of namespaces stored in a non-volatile memory device of the storage device; and

in response to receiving the command to resize the first namespace:

relocate a physical block address for the non-volatile memory device from an entry in a virtual to physical table identified by a first index value to an entry in the virtual to physical table identified by a second index value, wherein the relocating includes moving the entire physical block address; and

in response to relocating the physical block address, update a mapping, by a namespace table, to indicate an initial index value of a second namespace of the plurality of namespaces to include abutting index values in the virtual to physical table, wherein the namespace table and the virtual to physical table are separate tables, wherein the namespace table includes a namespace identifier that is mapped, by the namespace table, to a corresponding starting virtual to physical index value and to a corresponding namespace size, and wherein each of the namespace sizes represents a specific and separate entry in the namespace table.

10. The storage device of claim 9 , wherein:

the first namespace is associated with a first set of contiguous index values of the virtual to physical table; and

the second namespace is associated with a second set of contiguous index values of the virtual to physical table, the second set of contiguous index values starting with the initial index value indicated by the second table after relocating the physical block address.

11. The storage device of claim 10 , wherein:

the command to resize indicates adding a quantity of physical block addresses to the first set of contiguous index values for the first namespace, and

the controller is further configured to move the second set of contiguous index values for the second namespace within the virtual to physical table away from the first contiguous index values to permit adding the quantity of physical block addresses to the first set of contiguous index values for the first namespace.

12. The storage device of claim 11 , wherein:

the controller is further configured to determine whether one or more intermediate index values in the virtual to physical table permit adding the quantity of physical block addresses to the first set of contiguous index values for the first namespace,

the one or more intermediate index values are positioned between the first set of contiguous index values and the second set of contiguous index values, and

relocating the physical block address is in response to determining that the one or more intermediate index values in the virtual to physical table do not permit adding the quantity of physical block addresses to the first set of contiguous index values for the first names pace.

13. The storage device of claim 10 , wherein:

the command to resize indicates reducing a quantity of physical block addresses of the first set of contiguous index values for the first namespace, and

the controller is further configured to move the second set of contiguous index values for the second namespace within the virtual to physical table towards the first contiguous index values.

14. The storage device of claim 10 , wherein the controller is further configured to:

move the second set of contiguous index values for the second namespace within the virtual to physical table from a corresponding set of index values of the virtual to physical table to another corresponding set of index values of the virtual to physical table; and

prevent access to read and write to the second namespace while moving the second set of contiguous index values for the second namespace within the virtual to physical table.

15. The storage device of claim 9 , wherein:

data stored at a physical block address of the non-volatile memory device of the storage device includes a tag indicating the namespace identifier and an offset, and

the controller is further configured to:

determine an initial index value for the physical block address using the namespace table and the namespace identifier indicated in the tag; and

add the offset to the initial index value to determine an index value of the virtual to physical table corresponding with the physical block address.

16. The storage device of claim 9 , wherein:

the virtual to physical table is stored in a first memory of the controller,

the namespace table is stored in a second memory of the controller, and

the second memory of the controller has a faster input/output speed than the first memory.

17. A non-transitory computer-readable storage medium encoded with instructions that, when executed, cause one or more processors of a storage device to:

receive, from a host device, a command to resize a first namespace of a plurality of namespaces stored in a non-volatile memory device of the storage device; and

in response to receiving the command to resize the first namespace:

relocate a physical block address for the non-volatile memory device from an entry in a virtual to physical table identified by a first index value to an entry in the virtual to physical table identified by a second index value, wherein the relocating includes moving the entire physical block address; and

in response to relocating the physical block address, update a mapping, by a namespace table, to indicate an initial index value of a second namespace of the plurality of namespaces to include abutting index values in the virtual to physical table, wherein the namespace table and the virtual to physical table are separate tables, wherein the namespace table includes a namespace identifier that is mapped, by the namespace table, to a corresponding starting virtual to physical index value and to a corresponding namespace size, and wherein each of the namespace sizes represents a specific and separate entry in the namespace table.

18. The non-transitory computer-readable storage medium of claim 17 , wherein:

the first namespace is associated with a first set of contiguous index values of the virtual to physical table; and

the second namespace is associated with a second set of contiguous index values of the virtual to physical table, the second set of contiguous index values starting with the initial index value indicated by the second table after relocating the physical block address.

19. A system comprising:

means for receiving, from a host device, a command to resize a first namespace of a plurality of namespaces stored in a non-volatile memory device of a storage device;

means for relocating a physical block address for the non-volatile memory device from an entry in a virtual to physical table identified by a first index value to an entry in the virtual to physical table identified by a second index value, wherein the relocating includes moving the entire physical block address; and

means for updating a mapping, by a namespace table, to indicate an initial index value of a second namespace of the plurality of namespaces in response to relocating the physical block address to include abutting index values in the virtual to physical table, wherein the namespace table and the virtual to physical table are separate tables, wherein the namespace table includes a namespace identifier that is mapped, by the namespace table, to a corresponding starting virtual to physical index value and to a corresponding namespace size, and wherein each of the namespace sizes represents a specific and separate entry in the namespace table.

20. The system of claim 19 , further comprising:

means for preventing access to read and write to the second namespace while relocating the physical block address.

Assignments (5)
RELEASE OF SECURITY INTEREST AT REEL 052915 FRAME 0566 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 059127/0001 →
SECURITY INTEREST Recorded Feb 6, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052915/0566 →
CORRECTIVE ASSIGNMENT TO CORRECT THE INCORRECT SERIAL NO 15/025,946 PREVIOUSLY RECORDED AT REEL: 040831 FRAME: 0265. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Sep 15, 2017
From: HGST NETHERLANDS B.V.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 043973/0762 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 6, 2016
From: HGST NETHERLANDS B.V.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 040831/0265 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2016
From: DEWITT, DYLAN MARK; GARG, PIYUSH
To: HGST NETHERLANDS B.V.
Reel/Frame 038762/0558 →
Continuity (1)
Related Publication 20170351431A1 · Dec 7, 2017
Cited By (3)
US 12,216,615 US 12,321,261 US 12,367,178