Patent ID: 7574646

Claim:
A method for decoding data in a data storage system, the method comprising: generating by a detector an output bit stream in dependence on a data block received from a storage subsystem of the data storage system; generating by a post processor connected to the detector a first error corrected bit stream in dependence on the output bit stream and the data block; generating by an error correction decoder connected to the post processor a second error corrected bit stream in dependence on the first error corrected bit stream; generating by the error correction decoder a checksum in dependence of the second error corrected bit stream; in the event that the checksum is indicative of errors in the second error corrected bit stream and the second error corrected bit stream comprises at least one correct interleave: supplying from the error correction decoder to the post processor pinning data indicative of locations of correct bits in the second error corrected bit stream; and, regenerating by the post processor the first error corrected bit stream in dependence on the pinning data; wherein the regenerating comprises discounting bits at the locations indicated by the pinning data and wherein the pinning data is indicative of locations and values of correct bits in the second error corrected bit stream; supplying the pinning data from the error correction decoder to the detector in the event that the checksum is indicative of errors in the second error corrected bit stream and the second error corrected bit stream comprises at least one correct interleave; and regenerating by the detector the output bit stream in dependence on the pinning data; wherein the regenerating of the first error corrected bit steam is performed in dependence on the pinning data and the regenerated output stream.