Patrol function used in flash storage controller to detect data errors
First Claim
Patent Images
1. A method of managing data in a storage device which includes a controller and a flash memory module made up of a plurality of flash memory devices, the method comprising, when the storage device is operatively coupled to a host:
- performing a first read which includes reading first data and first error correction code (ECC) information, wherein the plurality of flash memory devices are organized in groups each group of which including a plurality of areas, the first read being performed from a first area of a first group of flash memory devices, the first data being associated with a request from an initiator in the host, the initiator having an identifier associated therewith which is one of a plurality of identifiers stored in the storage device;
generating second ECC information relating to the first data; and
as a result of establishing that the first and second ECC information do not match, performing a first ECC correction operation on the first data and determining whether the first ECC correction was successful resulting in corrected first data and a value specifying the number of corrected errors, such that;
if the first ECC correction operation is successful but the number of corrected errors exceeds a threshold, writing the corrected first data to an area of the first group of flash memory devices other than the first area and setting an indicator indicating that the data contained in the first area is invalid and if the number of corrected errors is below or equals the threshold, discarding the corrected first data without writing the corrected first data to the flash memory module; and
if the first ECC correction operation is unsuccessful, performing a subsequent ECC correction operation, and if the subsequent ECC correction is not successful, sending an error message to the initiator associated with the first data using the identifier of the initiator associated to the first data.
11 Assignments
0 Petitions
Accused Products
Abstract
A patrol function performed in a storage controller connected to a flash memory storage module. The function causes selected areas of the flash storage to be read for purposes of detecting and correcting errors.
-
Citations
40 Claims
-
1. A method of managing data in a storage device which includes a controller and a flash memory module made up of a plurality of flash memory devices, the method comprising, when the storage device is operatively coupled to a host:
-
performing a first read which includes reading first data and first error correction code (ECC) information, wherein the plurality of flash memory devices are organized in groups each group of which including a plurality of areas, the first read being performed from a first area of a first group of flash memory devices, the first data being associated with a request from an initiator in the host, the initiator having an identifier associated therewith which is one of a plurality of identifiers stored in the storage device; generating second ECC information relating to the first data; and as a result of establishing that the first and second ECC information do not match, performing a first ECC correction operation on the first data and determining whether the first ECC correction was successful resulting in corrected first data and a value specifying the number of corrected errors, such that; if the first ECC correction operation is successful but the number of corrected errors exceeds a threshold, writing the corrected first data to an area of the first group of flash memory devices other than the first area and setting an indicator indicating that the data contained in the first area is invalid and if the number of corrected errors is below or equals the threshold, discarding the corrected first data without writing the corrected first data to the flash memory module; and if the first ECC correction operation is unsuccessful, performing a subsequent ECC correction operation, and if the subsequent ECC correction is not successful, sending an error message to the initiator associated with the first data using the identifier of the initiator associated to the first data. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A method of managing data in a storage controller comprising a plurality of processor circuits operatively coupled to a flash memory module made up of at least three flash memory groups the method comprising the following steps for each of the flash memory groups when the storage controller is operatively coupled to a host via a host port circuit:
-
checking to determine if a worklist associated with the flash memory group contains any tasks requested by an initiator in the host to execute a portion of a host command, the initiator having an identifier associated therewith which is one of a plurality of identifiers stored in the storage controller; and performing the following steps if no tasks are found; performing a flash memory read relating to an area of the flash memory group; performing an ECC check related to data read from the area; performing an action if the ECC check reveals errors; repeating the above steps for substantially all areas of the flash memory group that contain currently valid data received as a result of a host-initiated write;
wherein at least one of the above steps is performed independently for each flash memory group; andwhen an ECC correction performed after the repeated ECC checks is not successful, sending an error message to the initiator related to the data read from the area of the flash memory group using the identifier of the initiator stored in the storage controller. - View Dependent Claims (13, 14, 15, 16, 17, 18, 19)
-
-
20. A method for managing data in a storage controller configured for operation in a system in which the storage controller comprises a plurality of processor circuits, the storage controller operatively coupled to a host via a host port circuit, the method comprising the following steps when the storage controller is operatively coupled to a flash memory module:
-
identifying an entry in a metadata table, the identification based on information in the entry, the information designating a first portion of the flash memory module; reading first data and first ECC information associated with the entry, the first data being associated with a request by an initiator in the host, the initiator having an identifier included in a plurality of identifiers stored in the storage controller; generating second ECC information based on the first data; comparing the first and second ECC information; if the first and second ECC information differ, performing a first ECC correction operation based on the first ECC information; if the first ECC correction operation being is successful and if the number of errors corrected exceeds a threshold, writing the corrected data to the flash memory module and invalidating the entry; wherein, if the number of errors corrected does not exceed the threshold, the corrected data is not written to the flash memory; and if an ECC correction subsequent to the first ECC correction is unsuccessful, sending an error message to the initiator via the host port circuit using the identifier of the initiator associated with the first data. - View Dependent Claims (21, 22, 23, 24, 25, 26, 27, 28, 33)
-
-
29. A storage controller operatively coupled to a host system and a flash memory module comprising:
-
a host port circuit to receive a host command from an initiator in the host system, the host command related to a first data in the flash memory module; a plurality of processor circuits; a memory circuit storing an identifier for the initiator; and an error correction engine coupled to the selected processor circuit and configured to perform an ECC check for a first check data in the flash memory module, wherein the error correction engine is configured to perform an error correction as a result of an error found by the ECC check, and wherein the host port circuit is configured to send an error message to the initiator using the identifier as a result of the error correction not being successful. - View Dependent Claims (30, 31, 32, 34, 35, 36, 37, 38, 39, 40)
-
Specification