Patent ID: 8793552

Claim:
A system for reading data, the system comprising: logic configured to read a plurality of data sets one or more times, each data set comprising a plurality of portions which combine together to wholly form the data set, wherein during each read of at least one of the plurality of data sets, settings are changed in an attempt to better read the at least one of the plurality of data sets; logic configured to store one or more of the portions of at least one of the plurality of data sets to a reserved data buffer when the one or more portions are correctable using C1-error correction code (ECC) to form one or more stored portions; logic configured to aggregate, for each of the plurality of data sets that have all portions thereof stored to the reserved data buffer, all stored portions thereof to form one or more assembled data sets; logic configured to determine whether C2-ECC is capable of correcting all errors in the one or more assembled data sets; logic configured to correct any remaining errors in the one or more assembled data sets using C2-ECC to form one or more corrected data sets, and to send the one or more corrected data sets to a host when C2-ECC is capable of correcting all errors in the one or more assembled data sets; and logic configured to reread at least a first uncorrected data set using a different setting in an error recovery procedure (ERP) when an error in the first uncorrected data set is not correctable using C2-ECC or an error in any portion of the first uncorrected data set is not correctable using C1-ECC, wherein the first uncorrected data set is positioned prior to any other uncorrected data set in a read direction.