IP Library Granted Patent US 8,700,951
Granted Patent B1
US 8,700,951 · App. 13/044,400 · Granted Apr 15, 2014

System and method for improving a data redundancy scheme in a solid state subsystem with additional metadata

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,951
App. No.
13/044,400
Granted
Apr 15, 2014
Kind
B1
Abstract

In one embodiment of the invention, a flash-based/solid-state storage system with an implemented data redundancy scheme such as RAID is configured to hold parity data in a volatile memory such as RAM and write such parity data to the non-volatile flash media when a full stripe of data has been written to the media. Other embodiments in certain situations force an early write of the parity for a partial stripe that has not been fully written to the non-volatile media. Those situations may include a data access error on data in a partial stripe and a detected power loss event with a partial stripe present. Embodiments are directed to writing additional data with the parity data for the partial stripe and then later using the additional data in data recovery. This approach allows the controller to easily detect the presence of a partial stripe and handle such a stripe accordingly.

Claims (41)

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, wherein each of the plurality of data stripes is of a pre-defined stripe size comprising a pre-defined number of data elements and wherein the controller is configured to write parity data to the non-volatile memory array for a data stripe in the non-volatile memory array that has reached the pre-defined strip size; and

a volatile memory for temporarily storing:

data to be written to the non-volatile memory array; and

parity data associated with partial data stripes in the non-volatile memory that have not yet reached the pre-defined stripe size;

wherein the controller is further configured to:

detect (1) 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 or (2) a power failure of the solid-state storage subsystem; and

in response to detecting the occurrence of data access error or power failure, write to the non-volatile memory array (1) metadata indicating validity of one or more data elements in a partial data stripe associated with the parity data and (2) the parity data for the partial data stripe,

whereby the metadata enables a delay of a re-writing of the partial data stripe into a full data stripe of the pre-defined size.

2. The solid-state storage subsystem of claim 1 , wherein the controller is further configured to use the metadata in a data relocation operation to determine which of the data elements in the partial data stripe are valid.

3. The solid-state storage subsystem of claim 1 , wherein the controller is further configured to use the metadata in a data recovery operation triggered by an uncorrectable ECC error.

4. The solid-state storage subsystem of claim 1 , wherein the non-volatile memory array comprises a plurality of pages, and wherein each page comprises a data area and a spare area.

5. The solid-state storage subsystem of claim 4 , wherein the parity data is written to the data area and the metadata is written to the spare area.

6. The solid-state storage subsystem of claim 5 , wherein the controller is further configured to read metadata from the spare area of a page to determine if the data area of the page contains parity data.

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

8. 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, wherein each of the plurality of data stripes is of a pre-defined stripe size comprising a pre-defined number of data elements;

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 partial data stripes in the non-volatile memory that have not yet reached the pre-defined stripe size;

detecting (1) 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 or (2) a power failure of the solid-state storage subsystem; and

in response to detecting the occurrence of data access error or power failure, writing to the non-volatile memory (1) metadata indicating validity of one or more data elements in a partial data stripe associated with the parity data and (2) the parity data for the partial data stripe.

9. The method of claim 8 , further comprising:

using the metadata in a data relocation operation to determine which of the data elements in the partial data stripe are valid.

10. The method of claim 8 , further comprising:

using the metadata in a data recovery operation triggered by an uncorrectable ECC error.

11. The method of claim 8 , wherein the non-volatile memory array comprises a plurality of pages, and wherein each page comprises a data area and a spare area.

12. The method of claim 11 , wherein the parity data is written to the data area of a page and the metadata is written to the spare area of the page.

13. The method of claim 12 , further comprising:

reading metadata from the spare area of a page to determine if the data area of the page contains parity data.

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

15. A solid-state storage subsystem, comprising:

a non-volatile memory array; and

a controller configured to implement a data redundancy configuration with a plurality of data stripes in the non-volatile memory array, the controller configured to respond to at least one type of failure event by creating a partial data stripe that contains (1) metadata that specifies which of data elements of the partial data stripe are valid, (2) parity data, and (3) both valid and invalid data elements, the controller further configured to use the metadata to determine which data elements of the partial data stripe are valid.

16. The solid-state storage subsystem of claim 15 , wherein the at least one type of failure event includes a power failure event.

17. The solid-state storage subsystem of claim 15 , wherein the at least one type of failure event includes a data access error from a data operation on the non-volatile memory array.

18. The solid-state storage subsystem of claim 17 , wherein the controller is further configured to use the parity data and metadata to recover from the data access error.

19. The solid-state storage subsystem of claim 17 , wherein the data operation is a read error or a program error.

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

21. The solid-state storage subsystem of claim 15 , further comprising:

a volatile memory for temporarily storing the parity data prior to the failure event,

wherein the controller is further configured to use the parity data stored in the volatile memory in the creation of the partial data stripe.

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 - DDTL LOAN AGREEMENT Recorded Aug 21, 2023
From: WESTERN DIGITAL TECHNOLOGIES, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 067045/0156 →
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 →
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 Apr 19, 2011
From: CALL, MATTHEW; MORRISON, JOHN; PHAN, LAN D.; SYU, MEI-MAN L.
To: WESTERN DIGITAL TECHNOLOGIES, INC.
Reel/Frame 026150/0742 →