Patent ID: 8656257

Claim:
A method for recovering data from encoded data stored in a nonvolatile memory storage module, the method comprising: receiving encoded data from a nonvolatile memory storage module at a nonvolatile memory controller, the encoded data comprising data encoded with an outer error correction code concatenated with an inner error correction code; and recovering the data from the encoded data by identifying any errors in the encoded data using the outer error correction code and correcting any identified errors in the encoded data using the outer error correction code if an error correction capacity of the outer error correction code is not exceeded; or recovering the data from the encoded data by identifying any errors in the encoded data using the inner error correction code and correcting any identified errors in the encoded data using the inner error correction code followed by identifying any remaining errors that were not successfully corrected by the inner error correction code using the outer error correction code and correcting any remaining errors that were not successfully corrected by the inner error correction code using the outer error correction code if the error correction capacity of the outer error correction code is exceeded before correcting the errors in the encoded data using the inner error correction code but is not exceeded after correcting the errors in the encoded data using the inner error correction code; or recovering the data from the encoded data by performing a redundant array of independent disks (RAID) operation if the error correction capacity of the outer error correction code is exceeded after recovering the data using the inner error correction code.