IP Library Granted Patent US 8,700,950
Granted Patent B1
US 8,700,950 · App. 13/025,980 · Granted Apr 15, 2014

System and method for data error recovery in a solid state subsystem

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 8,700,950
App. No.
13/025,980
Granted
Apr 15, 2014
Kind
B1
Abstract

Systems and methods are disclosed for recovering from a data access error encountered in data stripes implemented in a data redundancy scheme (e.g., RAID) in a solid state storage device. In one embodiment, the storage device holds parity data in a temporary, volatile memory such as a RAM and writes the parity data to the non-volatile memory when a full stripe's worth of new write data has been written to the non-volatile memory. In one embodiment, upon detecting that a data access error has occurred in a partially written stripe, the storage device initiates a write of the parity data for the partially written stripe to the non-volatile memory and executes a RAID recovery procedure using the newly written parity data to attempt to recover from the detected error. This approach allows for a recovery from the data access error without waiting for the full stripe to be written.

Claims (34)

1. A solid-state storage subsystem comprising:

a non-volatile memory array;

a controller configured to implement a data redundancy configuration with a plurality of data stripes in the non-volatile memory array; and

a volatile memory for temporarily storing data to be written to the non-volatile memory array and parity data for one or more of the data stripes in the non-volatile memory array, wherein each of the plurality of data stripes is of a pre-defined stripe size and wherein the controller is configured to write parity data for a data stripe to the non-volatile memory array when data already written to the non-volatile memory for the data stripe reaches the pre-defined stripe size;

wherein the controller is further configured to:

detect an occurrence of a data access error in one of the plurality of data stripes for which parity data has not been written to the non-volatile memory array; and

in response to detecting an occurrence of a data access error, move the parity data for the data stripe causing the error from the volatile memory to the non-volatile memory array ahead of a scheduled writing of the parity data, and

attempt to correct the data access error with the newly written parity data.

2. The solid-state storage subsystem of claim 1 , wherein the writing of the parity data creates a partial data stripe that is smaller than the pre-defined stripe size.

3. The solid-state storage subsystem of claim 2 , wherein the controller is further configured to combine the partial data stripe with additional data to create an expanded stripe of the pre-defined stripe size and write new parity data for the expanded stripe.

4. The solid-state storage subsystem of claim 1 , wherein the data access error is an ECC read error.

5. The solid-state storage subsystem of claim 1 , wherein the data access error is a program error.

6. The solid-state storage subsystem of claim 1 , wherein the data redundancy configuration is a redundant array of independent disks (RAID) configuration.

7. A method of recovering from a data access error in a solid-state storage subsystem, the method comprising:

implementing a data redundancy configuration with a plurality of data stripes in a non-volatile memory array of the solid-state storage subsystem;

temporarily storing, in a volatile memory of the solid-state storage subsystem, data to be written to the non-volatile memory array and parity data associated with said data to be written;

detecting an occurrence of a data access error in one of the plurality of data stripes for which parity data has not been written to the non-volatile memory array; and

in response to detecting the occurrence of a data access error, moving the parity data for said data stripe in which the data access error occurred from the volatile memory to the non-volatile memory array to make said parity data available for attempting to correct the data access error in advance of a scheduled write for the parity data, the scheduled write corresponding to a time when the data already written to the non-volatile memory for said data stripe reaches a pre-defined stripe size.

8. The method of claim 7 , wherein each of the plurality of data stripes is of the pre-defined stripe size and wherein the writing of the parity data creates a partial data stripe that is smaller than the pre-defined stripe size.

9. The method of claim 7 , further comprising:

combining the partial data stripe with additional data to create an expanded stripe of the pre-defined stripe size; and

writing new parity data for the expanded stripe.

10. The method of claim 7 , wherein the data access error is an ECC read error.

11. The method of claim 7 , wherein the data redundancy configuration is a redundant array of independent disks (RAID) configuration.

12. A solid-state storage subsystem comprising:

a non-volatile memory array;

a controller configured to implement a data redundancy configuration with a plurality of data stripes in the non-volatile memory array; and

volatile memory for temporarily storing data to be written to the non-volatile memory array and parity data for one or more of the data stripes in the non-volatile memory array;

wherein the controller is further configured to:

detect an occurrence of a data access error in one of the plurality of data stripes for which parity data has not been written to the non-volatile memory array; and

in response to detecting an occurrence of a data access error, move the parity data for the data stripe in which the data access error occurred from the volatile memory to the non-volatile memory array, in advance of a time when the data written to the non-volatile memory for the data stripe reaches a pre-defined stripe size, whereby the data access error can be corrected with the parity data.

13. The solid-state storage subsystem of claim 12 , wherein the data access error is an ECC read error.

14. The solid-state storage subsystem of claim 12 , wherein the data access error is a program error.

15. The solid-state storage subsystem of claim 12 , wherein the data redundancy configuration is a redundant array of independent disks (RAID) configuration.

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 038744/0481 →
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 038722/0229 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 12, 2011
From: SYU, MEI-MAN L.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 026117/0922 →