1. A method for processing a plurality of data blocks, the method comprising: receiving a correction flag for each of the data blocks, wherein each correction flag indicates whether a corresponding data block satisfies at least one error-check criterion; receiving information on at least one error event for each of the data blocks, wherein the information for each error event comprises: a pattern identifying at least one logical bit of the corresponding data block; and an error-event metric indicating a likelihood that an error occurred in the at least one logical bit identified by the pattern; determining a search trellis corresponding to the data blocks, wherein the determining the search trellis comprises: for each of the data blocks, including a representation of the at least one error event corresponding to the data block in the search trellis by including branches corresponding to the at least one error event; for each of the data blocks, omitting a representation of at least one possible error event corresponding to the data block from the search trellis by omitting branch corresponding to the at least one possible error event; and computing a branch metric for each of the branches included in the search trellis, each branch metric being computed based on the correction flag of the corresponding data block and the at least one error event of the corresponding data block; and performing a search on the search trellis to identify at most one error event for each data block, wherein the search is based on the branch metrics.