IP Library Granted Patent US 9,405,617
Granted Patent B1
US 9,405,617 · App. 14/216,295 · Granted Aug 2, 2016

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 9,405,617
App. No.
14/216,295
Granted
Aug 2, 2016
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 (29)

1. A storage subsystem comprising:

a non-volatile storage media comprising a plurality of data stripes, wherein a storage capacity of each of the plurality of data stripes is a defined size;

a volatile storage media for temporarily storing data to be written to the non-volatile storage media; and

a controller configured to

close each data stripe from the plurality of stripes when the quantity of data written to the data stripe corresponds to the storage capacity for the data stripe,

detect an occurrence of a data access error in a first data stripe from the plurality of data stripes, wherein the first data stripe comprises a data stripe with less data written to the data stripe than the defined size for the data stripe; and

in response to detecting an occurrence of the data access error, close the first data stripe prior to the quantity of data written to the first data stripe corresponding to the storage capacity of the first data stripe.

2. The storage subsystem of claim 1 , wherein the volatile storage media is further configured to store parity data for at least one of the data stripes.

3. The storage subsystem of claim 2 , wherein the controller is further configured to close the first data stripe by moving parity data corresponding to the first data stripe from the volatile storage media to the non-volatile storage media.

4. The storage subsystem of claim 1 , wherein closing the first data stripe in response to detecting the occurrence of the data access error creates a partial data stripe that is smaller than the defined size.

5. The storage subsystem of claim 1 , wherein, subsequent to recovery from the data access error, the controller is further configured to reopen the first data stripe.

6. The storage subsystem of claim 1 , wherein data of the first data stripe is combined with sufficient additional data to satisfy the storage capacity of the first data stripe.

7. The storage subsystem of claim 6 , wherein the additional data comprises data received from a host system.

8. The storage subsystem of claim 6 , wherein the additional data comprises filler data.

9. The storage subsystem of claim 6 , wherein the additional data comprises data generated from internal operations.

10. The storage subsystem of claim 1 , wherein the data access error comprises at least one of a read error and a program error.

11. The storage subsystem of claim 1 , wherein the controller is further configured to implement a data redundancy system.

12. A method of recovering from a data access error in a storage subsystem, the method comprising:

storing, in a volatile storage of a storage subsystem, data to be written to a non-volatile storage of the storage subsystem, the non-volatile storage comprising a plurality of data stripes with a storage capacity of a defined size;

detecting an occurrence of a data access error in a first data stripe from the plurality of data stripes, wherein the first data stripe comprises an open stripe; and

in response to detecting the occurrence of the data access error, closing the first data stripe prior to the first data stripe storing a quantity of data corresponding to the defined size.

13. The method of claim 12 , further comprising storing, in the volatile storage, parity data to be written to the non-volatile storage, the parity data corresponding to the data.

14. The method of claim 13 , wherein closing the first data stripe comprises moving parity data corresponding to the first data stripe from the volatile storage to the non-volatile storage.

15. The method of claim 12 , wherein closing the first data stripe in response to detecting the occurrence of the data access error creates a partial data stripe that is smaller than the defined size.

16. The method of claim 12 , further comprising reopening the first data stripe subsequent to recovery from the data access error.

17. The method of claim 12 , further comprising combining data of the first data stripe with sufficient additional data to fill an unused portion of the storage capacity of the first data stripe.

18. The method of claim 17 , wherein the additional data comprises at least one of data received from a host system, filler data, and data generated from internal operations.

19. The method of claim 17 , further comprising writing new parity data corresponding to the additional data to the first data stripe.

20. The method of claim 12 , wherein the data access error comprises at least one of a read error and a program error.

Assignments (10)
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 26, 2014
From: SYU, MEI-MAN L.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 032763/0630 →