IP Library Granted Patent US 10,031,689
Granted Patent B2
US 10,031,689 · App. 15/266,690 · Granted Jul 24, 2018

Stream management for storage devices

Inventors: David George Dreyer (Rochester, MN); Adam Espeseth (Rochester, MN)
Assignee: Western Digital Technologies, Inc.
G06F3/064G06F3/061G06F3/0653G06F3/0688G06F13/4068G06F2213/0026
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,031,689
App. No.
15/266,690
Granted
Jul 24, 2018
Kind
B2
Abstract

In general, techniques are described for stream management in storage devices. A storage device comprising a memory device and a processor may be configured to perform the techniques. The processor may detect a stream collision in which a host device writes a first version of a logical block (LB) to a first stream, and writes a second version of the same LB to a second stream. The processors may compare a first blockset sequence number (BSN) associated with a first collection of physical blocks referenced by the first stream to a second BSN associated with a second collection of physical blocks referenced by the second stream. Based on the comparison of the first BSN to the second BSN, the processor may write, to the mem device, the second version of the LB to the first stream.

Claims (45)

1. A method comprising:

receiving, by a storage device, a first write request for writing a first version of a logical block (LB) to a first stream associated with a first collection of physical blocks of the storage device;

receiving, by the storage device, a second write request for writing a second version of the LB to a second stream associated with a second collection of physical blocks of the storage device;

detecting, by the storage device, a stream collision based upon the first stream and the second stream being different;

determining, by the storage device, in response to detecting the stream collision and before writing the second version of the logical block, which of the first stream and the second stream is more recent by comparing a first blockset sequence number (BSN) associated with the first collection of physical blocks to a second BSN associated with the second collection of physical blocks; and

writing, by the storage device, the second version of the LB to the more recent one of the first stream or the second stream based on the comparison of the first BSN to the second BSN.

2. The method of claim 1 , further comprising accessing an indirection table, based on a LB address (LBA) assigned to the LB and prior to the comparison of the first BSN to the second BSN, to determine the first BSN associated with the first collection of physical blocks to which the first version of the LB was written.

3. The method of claim 1 , further comprising:

storing an association, to the first collection of physical blocks, between the first BSN and the first stream; and

accessing, based on the first BSN and prior to writing the second version of the LB, the association between the first BSN and the first stream to determine the first stream.

4. The method of claim 1 , further comprising writing the second version of the LB to the first stream when the first BSN is greater than the second BSN.

5. The method of claim 1 , wherein the first stream is identified by a first stream identifier and the second stream is identifier by a second stream identifier.

6. The method of claim 1 , further comprising writing the second version of the LB to the second stream when the second BSN is greater than the first BSN.

7. The method of claim 1 , further comprising:

receiving the first write request from a host device in accordance with an interface specification, the first write request requesting that the first version of the LB be written to the first stream; and

receiving the second write request from the host device in accordance with the interface specification, the second write request requesting that the second version of the LB be written to the second stream.

8. The method of claim 7 , wherein the interface specification comprises a non-volatile memory (NVM) express (NVMe) interface specification.

9. The method of claim 1 , wherein the storage device comprises a solid state storage device.

10. A storage device comprising:

a memory device; and

one or more processors configured to:

receive a first write request for writing a first version of a logical block (LB) to a first stream associated with a first collection of physical blocks of the storage device;

receive a second write request for writing a second version of the LB to a second stream associated with a second collection of physical blocks of the storage device;

detect a stream collision based upon the first stream and the second stream being different;

determine in response to detecting the stream collision and before writing the second version of the logical block, which of the first stream and the second stream is more recent by comparing a first blockset sequence number (BSN) associated with the first collection of physical blocks to a second BSN associated with the second collection of physical blocks; and

write, to the memory device, the second version of the LB to the more recent one of the to the first stream or the second stream based on the comparison of the first BSN to the second BSN.

11. The storage device of claim 10 , wherein the one or more processors are further configured to access an indirection table, based on a LB address (LEA) assigned to the LB and prior to the comparison of the first BSN to the second BSN, to determine the first BSN associated with the first collection of physical blocks to which the first version of the LB was written.

12. The storage device of claim 10 , wherein the one or more processors are further configured to:

store an association, to the first collection of physical blocks, between the first BSN and the first stream; and

access, based on the first BSN and prior to writing the second version of the LB, the association between the first BSN and the first stream to determine the first stream.

13. The storage device of claim 10 , wherein the one or more processors are configured to write the second version of the LB to the first stream when the first BSN is greater than the second BSN.

14. The storage device of claim 10 , wherein the first stream is identified by a first stream identifier and the second stream is identifier by a second stream identifier.

15. The storage device of claim 10 , wherein the one or more processors are configured to write the second version of the LB to the second stream when the second BSN is greater than the first BSN.

16. The storage device of claim 10 , wherein the one or more processors are further configured to:

receive the first write request from a host device in accordance with an interface specification, the first write request requesting that the first version of the LB be written to the first stream; and

receive the second write request from the host device in accordance with the interface specification, the second write request requesting that the second version of the LB be written to the second stream.

17. The storage device of claim 16 , wherein the interface specification comprises a non-volatile memory (NVM) express (NVMe) interface specification.

18. The storage device of claim 10 , wherein the storage device comprises a solid state storage device.

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

receive a first write request for writing a first version of a logical block (LB) to a first stream associated with a first collection of physical blocks of the storage device;

receive a second write request for writing a second version of the LB to a second stream associated with a second collection of physical blocks of the storage device

detect a stream collision based upon the first stream and the second stream being different;

determine in response to detecting the stream collision and before writing the second version of the logical block, which of the first stream and the second stream is more recent by comparing a first blockset sequence number (BSN) associated with the first collection of physical blocks to a second BSN associated with the second collection of physical blocks; and

write the second version of the LB to the to the more recent one of the first stream or the second stream based on the comparison of the first BSN to the second BSN.

20. The non-transitory computer-readable storage medium of claim 19 , further encoded with instructions that, when executed, cause the one or more processors to access an indirection table, based on a LB address (LEA) assigned to the LB and prior to the comparison of the first BSN to the second BSN, to determine the first BSN associated with the first collection of physical blocks to which the first version of the LB was written.

Assignments (10)
SECURITY AGREEMENT Recorded Apr 25, 2025
From: SANDISK TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 071050/0001 →
PARTIAL RELEASE OF SECURITY INTERESTS Recorded Apr 25, 2025
From: JPMORGAN CHASE BANK, N.A., AS AGENT
To: SANDISK TECHNOLOGIES, INC.
Reel/Frame 071382/0001 →
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 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 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 15, 2016
From: DREYER, DAVID GEORGE; ESPESETH, ADAM
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 039759/0042 →
Continuity (1)
Related Publication 20180074709A1 · Mar 15, 2018