IP Library Granted Patent US 9,361,044
Granted Patent B2
US 9,361,044 · App. 13/073,588 · Granted Jun 7, 2016

Power-safe data management system

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 9,361,044
App. No.
13/073,588
Granted
Jun 7, 2016
Kind
B2
Abstract

Embodiments of the invention include systems and methods for recovering the system status and maintaining drive coherency after an unexpected power loss. In particular, these systems and methods reduce overhead for maintaining drive coherency by providing for pre-allocation of groups of write addresses and recording the pre-allocated groups of addresses to the non-volatile memory. Write processes can write to the pre-allocated group of addresses while the next group of addresses are pre-allocated and recorded to non-volatile memory.

Claims (46)

1. A method performed by a controller of a data storage subsystem for protecting against power loss, comprising:

maintaining a record of drive status corresponding to a write process in a volatile memory of the storage subsystem, the record including, for the write process, data related to a first superblock and a second superblock, the first superblock designated as a current superblock to which the write process is writing, and the second superblock designated as a next superblock to which the write process will write after the first superblock has been written to, wherein the first and second superblocks designate address locations in a non-volatile solid-state storage array; sequentially writing to the first superblock;

upon writing to a last write address in the first superblock, designating the second superblock as the current superblock to be written by the write process, the designation being reflected in the record of drive status;

initiating a flush of the record of drive status from the volatile memory to non-volatile memory of the data storage subsystem after the designating, the flush including saving the record of drive status to a portion of the non-volatile solid-state storage array; and

writing to the second superblock prior to the completion of the flush of the record, whereby the write process is not delayed by the flush of the record,

said method performed by a controller of the storage subsystem.

2. The method of claim 1 , wherein the record is stored in a master record in the volatile memory, and the master record is periodically flushed to the non-volatile memory.

3. The method of claim 1 , wherein each superblock comprises at least one write block from a plurality of dies in the non-volatile solid-state storage array.

4. The method of claim 1 , further comprising the step of reconstructing, subsequent to the power loss, system tables and write status by referencing the saved record.

5. The method of claim 4 , wherein the record further includes data related to a third superblock, wherein the designating further comprises:

designating the first superblock as a previously written superblock; and

designating the third superblock as the superblock to be written upon writing to a last write address in the second superblock.

6. The method of claim 5 , whereby the first superblock designated as a previously written superblock is used to restore a log of write process after the power loss.

7. The method of claim 5 , wherein the reconstructing includes reconstructing a write log with reference to the data relating to the first superblock and data relating to the second superblock.

8. The method of claim 1 , wherein the record includes at least one of an erase queue, a close queue, and a free pool of superblocks.

9. The method of claim 1 , further comprising:

recovering from an unexpected power loss in the storage subsystem;

reading the record of drive status from the non-volatile storage in response to the recovery to identify the designated current superblock and the designated next superblock;

first scanning the current superblock designated in the record of drive status for a last write record for the write process before the unexpected power loss;

second scanning the next superblock designated in the record of drive status for the last write record in response to the first scanning not identifying the last write record;

updating an activity log based on the scanning; and

updating the non-volatile solid-state storage array based on the activity log.

10. A data storage system configured to preserve system status information in anticipation of power loss, comprising:

a non-volatile solid-state memory array, including a plurality of superblocks, each superblock comprising a plurality of physical write addresses;

a controller configured to control a plurality of write processes for writing data to the non-volatile solid-state memory array, the plurality of write processes including a user data write process and an internal system write process, each of the write processes sequentially writing to portions of the non-volatile solid-state memory array according to a superblock assigned to the write process; and

an interface to a host system through which the system receives memory commands to be executed by the user data write process;

wherein the controller is configured to:

for a write process of the plurality of write processes, maintain a record of drive status in a volatile memory of the data storage system, comprising data indicative of drive activity status corresponding to the write process, the record containing data related to the superblock assigned to the write process and a next superblock, the next superblock indicating a superblock to which the write process will write after the physical write addresses in the assigned superblock are exhausted; and

flush the record of drive status from the volatile memory to the non-volatile solid-state memory array, the flushing including saving the record in the volatile memory to a portion of the non-volatile solid-state storage array and being performed independent of any write process of the plurality of write processes completing writing to its assigned superblock and beginning to write to the next superblock, so that the writing to a next superblock by a write process of the write processes is not contingent on a completion of a flushing of the record to the non-volatile solid-state memory array.

11. The data storage system of claim 10 , wherein the record further includes, for each of the plurality of write processes, data related to an associated former superblock recording physical write addresses to which the process has been writing.

12. The data storage system of claim 11 , wherein when the write process completes writing to the assigned superblock and begins writing to the next superblock, the controller is further configured to re-assign, in the record, data related to the assigned superblock as the data related to the former superblock and the data related to the next superblock as the data related to the assigned superblock.

13. The data storage system of claim 10 , wherein when the write process completes writing to the assigned superblock and begins writing to the next superblock, the record is updated to reflect the current write status of the write process and to allocate a new superblock from the plurality of memory units as the next superblock for the write process.

14. The data storage system of claim 13 , wherein the record further includes an erase queue and a close queue, each of which includes a portion of the plurality of superblocks, and wherein when the record is updated to allocate a new superblock from the plurality of superblocks, the allocated superblock which is chosen from the plurality of superblocks is not a superblock included in the erase queue or the close queue.

15. The data storage system of claim 14 , wherein the record further includes a free pool of superblocks, and wherein the allocated superblock chosen from the plurality superblocks is a superblock included in the free pool of superblocks.

16. The data storage system of claim 10 , wherein the controller is configured to reconstruct the data storage system status upon power-up from the record.

17. A method of recording the status of a data storage system, comprising:

modifying, by a process executed by a controller of the data storage system, data at a first superblock in a solid-state storage array;

allocating, for the process, a second superblock in the solid-state storage array, such that the second superblock is not modified by the process until the process has completed modifying data at the first superblock;

storing, in the solid-state storage array, a record corresponding to the process, the record including data reflective of the first and second superblocks, wherein the first and second superblocks are designated as a current and next superblock for the process;

modifying, by the process, data at the second superblock, wherein the modifying of data at the second superblock begins prior to completion of the storing step so that the modification to the data at the second superblock is not reflected in the record stored in the solid-state storage array;

retrieving the record stored on the solid-state storage array in response to an unexpected power loss of the data storage system; and

identifying a last data modified by the process before the unexpected power loss, comprising:

scanning the first superblock reflected by the data in the retrieved record for the last data modified by the process before the unexpected power loss; and

scanning the second superblock reflected by the data in the retrieved record for the last record written in response to not identifying the last data modified in the first superblock.

18. The method of claim 17 , wherein the process is one of a user data manager, a wear leveling process, or a garbage collection process.

19. The method of claim 17 , wherein the retrieving and scanning are performed after a power loss event.

Assignments (13)
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 038744 FRAME 0481 Recorded Feb 8, 2022
From: JPMORGAN CHASE BANK, N.A.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 058982/0556 →
RELEASE OF SECURITY INTEREST Recorded Mar 5, 2018
From: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 045501/0714 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038722/0229 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: U.S. BANK NATIONAL ASSOCIATION, AS COLLATERAL AGENT
Reel/Frame 038744/0281 →
SECURITY AGREEMENT Recorded May 17, 2016
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A., AS COLLATERAL AGENT
Reel/Frame 038744/0481 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 2, 2011
From: CHIU, LYNDON S.; ADI, FREDERICK H.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 026381/0165 →