IP Library Granted Patent US 11,226,747
Granted Patent B2
US 11,226,747 · App. 16/746,663 · Granted Jan 18, 2022

System and method for copy on write on an SSD

Inventors: Dylan Mark Dewitt (Rochester, MN); Adam Michael Espeseth (Rochester, MN); Colin Christopher McCambridge (Rochester, MN); David George Dreyer (Rochester, MN)
Assignee: Western Digital Technologies, Inc.
G06F3/0619G06F3/061G06F3/065G06F3/0655G06F3/0688G06F12/0246G06F13/4022G06F13/4282G06F2212/1016G06F2212/1032G06F2212/154G06F2212/7201
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,226,747
App. No.
16/746,663
Granted
Jan 18, 2022
Kind
B2
Abstract

Techniques for improved copy on write functionality within an SSD are disclosed. In some embodiments, the techniques may be realized as a method for providing improved copy on write functionality within an SSD including providing, in memory of a device, an indirection data structure. The data structure may include a master entry for cloned data, the master entry having a reference to one or more indexes and a clone entry for the cloned data, the cloned entry having at least one of: a reference to a master index, a reference to a next index, and a value indicating an end of a data structure. The techniques may include traversing, using a computer processor, one or more copies of the cloned data using one or more of the references.

Claims (46)

1. A method for improved copy on write functionality within an SSD, comprising:

creating a master c-entry, wherein the master c-entry contains LBAs mapped to a plurality of physical addresses and wherein the master c-entry contains actual mappings to less than all of the plurality of physical addresses;

creating a clone c-entry, wherein the clone c-entry contains LBAs mapped to less than all of the plurality of physical addresses, wherein the clone c-entry maps to at least one physical address of the plurality of physical addresses that matches a physical address actually mapped in the master c-entry, and wherein the clone c-entry maps to at least one physical address of the plurality of physical addresses that is not actually mapped in the master c-entry;

assigning a block within the master c-entry to indicate a first master index, wherein the first master index is configured to point to the master c-entry;

assigning a block within the master c-entry to indicate a first next index, wherein the first next index is configured to point to a first clone c-entry in a chain;

assigning a block within the clone c-entry to indicate a second master index, wherein the second master index is configured to point to the master c-entry;

assigning a block within the clone c-entry to indicate a second next index, wherein the second next index is configured to point to one or more of a next clone c-entry, the master c-entry, and a value indicating an end of the chain;

reading the master c-entry and the clone c-entry; and

uncloning the clone c-entry.

2. The method of claim 1 , wherein the creating the master c-entry and creating the clone c-entry is implemented on a flat indirection system.

3. The method of claim 2 , wherein the flat indirection system has an indirection data structure with entries.

4. The method of claim 3 , wherein the indirection data structure entry has a clone tracking bit.

5. The method of claim 4 , wherein the clone tracking bit is set to 1 to indicate that a particular packed logical block is a master copy.

6. A method for improved copy on write functionality within an SSD comprising:

creating a master c-entry, wherein the master c-entry contains LBAs mapped to a plurality of physical addresses and wherein the master c-entry contains actual mappings to less than all of the plurality of physical addresses;

creating a clone c-entry, wherein the clone c-entry contains LBAs mapped to less than all of the plurality of physical addresses, wherein the clone c-entry maps to at least one physical address of the plurality of physical addresses that matches a physical address actually mapped in the master c-entry, and wherein the clone c-entry maps to at least one physical address of the plurality of physical addresses that is not actually mapped in the master c-entry;

determining that a reference to a next index of the master c-entry points to the clone c-entry;

uncloning the clone c-entry by replacing the reference to the next index located in a first sub-entry with a packed logical block, and replacing a reference to a master index located in a second sub-entry with a packed logical block; and

uncloning the master c-entry by replacing the reference to the next index located in a third sub-entry with a packed logical block, and replacing the reference to the master index located in a fourth sub-entry with a packed logical block, wherein each packed logical block comprises a map of logical block addresses (LBAs) to a physical address.

7. The method of claim 6 , wherein the references comprise entries in a flat indirection table for logical block addressing.

8. The method of claim 6 , wherein the references comprise entries in a tree data structure for logical block addressing.

9. The method of claim 6 , further comprising setting an indicator for one or more of the packed logical blocks located in the master c-entry and the cloned entry to indicate that the one or more packed logical blocks are cloned.

10. The method of claim 6 , wherein the reference to the master index of the master c-entry points to the master entry.

11. The method of claim 6 , wherein the reference to the master index of the cloned entry points to the master c-entry.

12. The method of claim 6 , wherein a reference to the next index of a last cloned entry in a data structure points to the master entry.

13. The method of claim 6 , further comprising:

determining that the clone entry for cloned data is one of a plurality of clone entries, wherein the determination comprises determining at least one of:

that the reference to the next index of the cloned entry does not match the reference to the master index of the cloned entry; and

that the reference to the next index of the master entry does not point to the clone entry for the cloned data; and

uncloning the clone entry for the cloned data by setting a reference to a next index of a prior clone entry of the plurality of clone entries equal to the reference to the next index of the cloned entry for the cloned data.

14. The method of claim 6 , further comprising:

reviewing a fifth sub-entry of an indirection data structure during a garbage collection process;

determining that the fifth sub-entry contains a cloned indicator; and

determining that the fifth sub-entry in the garbage collection process is a valid sub-entry not to be deleted based upon the determination that the fifth sub-entry contains the cloned indicator.

15. A method for improved copy on write functionality within an SSD, comprising:

determining that a reference to a next index of a master entry points to a clone entry of cloned data;

uncloning the clone entry of cloned data by replacing the reference to the next index located in a first sub-entry with a packed logical block, and replacing the reference to the master index located in a second sub-entry with a packed logical block; and

uncloning the master entry of the cloned data by replacing the reference to the next index located in a third sub-entry with a packed logical block, and replacing the reference to the master index located in a fourth sub-entry with a packed logical block, wherein each packed logical block comprises a map of logical block addresses (LBAs) to a physical address.

16. A system for providing improved copy on write functionality within a solid state drive, the system comprising:

a first device;

wherein the first device includes stored instructions stored in memory, the instructions comprising:

determining that a reference to a next index of a master entry points to a clone entry of cloned data;

uncloning the clone entry of cloned data by replacing the reference to the next index located in a first sub-entry with a packed logical block, and replacing the reference to the master index located in a second sub-entry with a packed logical block; and

uncloning the master entry of the cloned data by replacing the reference to the next index located in a third sub-entry with a packed logical block, and replacing the reference to the master index located in a fourth sub-entry with a packed logical block, wherein each packed logical block comprises a map of logical block addresses (LBAs) to a physical address.

17. The system of claim 16 , wherein the references comprise entries in a flat indirection table for logical block addressing.

18. The system of claim 16 , further comprising an instruction to set an indicator for one or more of the packed logical blocks located in the master entry and the cloned entry to indicate that the one or more packed logical blocks are cloned.

Assignments (11)
SECURITY AGREEMENT (SUPPLEMENTAL) Recorded Nov 14, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 069411/0208 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 11, 2024
From: SANDISK TECHNOLOGIES, INC.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 069168/0273 →
PATENT COLLATERAL AGREEMENT Recorded Aug 23, 2024
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS THE AGENT
Reel/Frame 068762/0494 →
CHANGE OF NAME Recorded Jun 27, 2024
From: SANDISK TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067982/0032 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 29, 2024
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 067567/0682 →
PATENT COLLATERAL AGREEMENT - A&R LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 064715/0001 →
PATENT COLLATERAL AGREEMENT - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
RELEASE OF SECURITY INTEREST AT REEL 052025 FRAME 0088 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058965/0699 →
SECURITY INTEREST Recorded Feb 26, 2020
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS AGENT
Reel/Frame 052025/0088 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2020
From: HGST NETHERLANDS B.V.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 051985/0589 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 20, 2020
From: DEWITT, DYLAN MARK; ESPESETH, ADAM MICHAEL; MCCAMBRIDGE, COLIN CHRISTOPHER; DREYER, DAVID GEORGE
To: HGST NETHERLANDS B.V.
Reel/Frame 051882/0565 →