1. A method for error correction, comprising: accepting input comprising at least part of a code word that has been encoded by an Error Correction Code (ECC) defined by a set of parity check equations, the code word comprising data bits and parity bits, wherein the ECC comprises a systematic ECC that is representable by a parity check matrix having a data sub-matrix and a parity sub-matrix; applying a decoding process to the code word using the data bits and only a first partial subset of the parity bits that were comprised in the input and using only a second partial subset of the parity check equations; and upon a failure to decode the code word using the first and second partial subsets, re-decoding the code word using the data bits and all the parity bits that were comprised in the input and using all the parity check equations in the set, wherein the set of the parity check equations is defined such that any parity bit in the code word appears in multiple parity check equations in the set, and any parity bit in the first partial subset of the parity bits appears in a plurality of parity check equations in the second partial subset of the parity check equations; wherein a first sub-matrix of the parity sub-matrix corresponding to the first partial subset of the parity bits and to the second partial subset of the parity check equations is lower triangular except for a group of last columns of the first sub-matrix.