Patent ID: 8621318

Claim:
A method for recovering 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 an outer error correction code concatenated with an inner error correction code; performing a hard-decision inner error correction code decoding of the encoded data using a hard-decision algorithm and performing an outer error correction code decoding of the hard-decision inner error correction code decoded data and determining if the encoded data was successfully decoded by the hard-decision inner error correction code decoding and the outer error correction code decoding; if it is determined that the encoded data was not successfully decoded by the hard-decision inner error correction code decoding and the outer error correction code decoding, performing a soft-decision inner error correction code decoding of the encoded data using a soft-decision algorithm and performing an outer error correction code decoding of the soft-decision inner error correction code decoded data and determining if the encoded data was successfully decoded by the soft-decision inner error correction code decoding and the outer error correction code decoding; and if it is determined that the encoded data was not successfully decoded by the soft-decision inner error correction code decoding and the outer error correction code decoding, performing a redundant array of independent disks (RAID) operation of the encoded data.