Reconstructive error recovery procedure (ERP) using reserved buffer
First Claim
1. A system for reading data, the system comprising:
- logic configured to set a first counter to zero prior to reading a data set;
logic configured to read the data set one or more times, the data set comprising a plurality of portions which combine together to wholly form the data set, wherein during each read of the data set, settings are changed in an attempt to better read the data set and the first counter is incremented by one;
logic configured to store all portions of the data set to a reserved data buffer after a first reading of the data set;
logic configured to determine whether the stored data set is correctable using at least one of C1-error correction code (ECC) and C2-ECC, wherein when the data set is correctable using at least one of C1-ECC and C2-ECC, the stored data set is recovered;
logic configured to determine whether the first counter equals a predetermined threshold prior to each read of the data set, wherein when the first counter equals the predetermined threshold the data set is reported as unreadable;
logic configured to set a second counter to zero prior to rereading the data set;
logic configured to reread portions assumed to be in the data set;
logic configured to perform a validity check to determine whether a currently read portion is in the data set;
logic configured to determine that the currently read portion of the data set is correctable using C1-ECC using a syndrome check when the validity check confirms that the portion is from the data set;
logic configured to store one or more of the portions of the data set to the reserved data buffer after subsequent readings of the data set when the one or more portions are correctable using C1-ECC;
logic configured to determine that all portions of the data set have been reread according to the second counter, wherein the second counter is incremented by one after any of;
storing a portion of the data set, determining that the currently read portion is not in the data set, and determining that the currently read portion of the data set is not correctable using C1-ECC;
logic configured to aggregate the one or more portions of the data set in the reserved data buffer to form an assembled data set, wherein each of the one or more portions are correctable using C1-ECC;
logic configured to determine whether C2-ECC is capable of correcting all errors in the assembled data set;
logic configured to correct any remaining errors in the assembled data set using C2-ECC to form a reconstructed data set and send the reconstructed data set to a host when C2-ECC is capable of correcting all errors in the assembled data set; and
logic configured to reread the data set using a different setting in an error recovery procedure (ERP) when an error in the assembled data set, is not correctable using C2-ECC.
1 Assignment
0 Petitions
Accused Products
Abstract
According to one embodiment, a method for reading data from a medium includes reading a data set from a medium repeatedly using different settings until either: a reconstructed data set is sent to a host and/or stored, or a maximum number of rereads has been reached, after each reading of the data set, storing each row to the reserved data buffer that has no errors or errors in the row are correctable using C1-Error Correction Code (ECC) unless a matching row already exists in the reserved data buffer that has fewer corrected errors therein, assembling the data set from the rows stored in the reserved data buffer to form an assembled data set, correcting any remaining errors in the assembled data set using C2-ECC to form the reconstructed data set, and sending the reconstructed data set to the host and/or storing the reconstructed data set.
-
Citations
12 Claims
-
1. A system for reading data, the system comprising:
-
logic configured to set a first counter to zero prior to reading a data set; logic configured to read the data set one or more times, the data set comprising a plurality of portions which combine together to wholly form the data set, wherein during each read of the data set, settings are changed in an attempt to better read the data set and the first counter is incremented by one; logic configured to store all portions of the data set to a reserved data buffer after a first reading of the data set; logic configured to determine whether the stored data set is correctable using at least one of C1-error correction code (ECC) and C2-ECC, wherein when the data set is correctable using at least one of C1-ECC and C2-ECC, the stored data set is recovered; logic configured to determine whether the first counter equals a predetermined threshold prior to each read of the data set, wherein when the first counter equals the predetermined threshold the data set is reported as unreadable; logic configured to set a second counter to zero prior to rereading the data set; logic configured to reread portions assumed to be in the data set; logic configured to perform a validity check to determine whether a currently read portion is in the data set; logic configured to determine that the currently read portion of the data set is correctable using C1-ECC using a syndrome check when the validity check confirms that the portion is from the data set; logic configured to store one or more of the portions of the data set to the reserved data buffer after subsequent readings of the data set when the one or more portions are correctable using C1-ECC; logic configured to determine that all portions of the data set have been reread according to the second counter, wherein the second counter is incremented by one after any of;
storing a portion of the data set, determining that the currently read portion is not in the data set, and determining that the currently read portion of the data set is not correctable using C1-ECC;logic configured to aggregate the one or more portions of the data set in the reserved data buffer to form an assembled data set, wherein each of the one or more portions are correctable using C1-ECC; logic configured to determine whether C2-ECC is capable of correcting all errors in the assembled data set; logic configured to correct any remaining errors in the assembled data set using C2-ECC to form a reconstructed data set and send the reconstructed data set to a host when C2-ECC is capable of correcting all errors in the assembled data set; and logic configured to reread the data set using a different setting in an error recovery procedure (ERP) when an error in the assembled data set, is not correctable using C2-ECC. - View Dependent Claims (2, 3, 4, 5, 6)
-
-
7. A method for reading data, the method comprising:
-
setting a first counter to zero prior to reading a data set; reading the data set one or more times, the data set comprising a plurality of portions which combine together to wholly form the data set, wherein during each read of the data set, settings are changed in an attempt to better read the data set and the first counter is incremented by one; storing all portions of the data set to a reserved data buffer after a first reading of the data set; determining whether the stored data set is correctable using at least one of C1-error correction code (ECC) and C2-ECC, wherein when the data set is correctable using at least one of C1-ECC and C2-ECC, the stored data set is recovered; determining whether the first counter equals a predetermined threshold prior to each read of the data set, wherein when the first counter equals the predetermined threshold the data set is reported as unreadable; setting a second counter to zero prior to rereading the data set; rereading portions assumed to be in the data set; performing a validity check to determine whether a currently read portion is in the data set; determining that the currently read portion of the data set is correctable using C1-ECC using a syndrome check when the validity check confirms that the portion is from the data set; storing one or more of the portions of the data set to the reserved data buffer after subsequent readings of the data set when the one or more portions are correctable using C1-ECC; determining that all portions of the data set have been reread according to the second counter, wherein the second counter is incremented by one after any of;
storing a portion of the data set, determining that the currently read portion is not in the data set, and determining that the currently read portion of the data set is not correctable using C1-ECC;aggregating the one or more portions of the data set in the reserved data buffer to form an assembled data set, wherein each of the one or more portions are correctable using C1-ECC; determining whether C2-ECC is capable of correcting all errors in the assembled data set; correcting any remaining errors in the assembled data set using C2-ECC to form a reconstructed data set and sending the reconstructed data set to a host when C2-ECC is capable of correcting all errors in the assembled data set; and rereading the data set using a different setting in an error recovery procedure (ERP) when an error in the assembled data set is not correctable using C2-ECC. - View Dependent Claims (8, 9, 10, 11, 12)
-
Specification