2017-09-19 19:51 GMT+03:00 Eric Sandeen <sand...@redhat.com>: > On 9/19/17 10:35 AM, Timofey Titovets wrote: >> Stupid question: >> Does btrfs use crc32 for error correction? >> If no, why? >> >> (AFAIK if using CRC that possible to fix 1 bit flip) >> >> P.S. I try check that (i create image, create text file, flip bit, try >> read and btrfs show IO-error) >> >> Thanks! > > I wasn't aware that crc32 could (in general) be used for single bit > correction; I've read up on that, and it seems pretty cool. > > However, I don't think that the generator polynomial used in crc32c /can/ be > used for error correction. I just skimmed some reading, but that seems to be > the case if I understand it correctly. > > -Eric
That possible, but if i understood doc about CRC16 bit correction correctly, that need some tricks (As example preprocess all possible bit flips and have a map of that) for fast find bit error. Also in theory for CRC32C that possible with some state machine, to move algo backward and forward over data. I also check [1], so CRC32C (for our case) have hamming distance about 4. So CRC32 in theory can fix up to HD-1 ~= 3 bit (If i understand all things correctly); So that possible to just brute force over data and flip 1-3 bit, and try check if CRC fixed %) In theory that safe for 1-2 bit error (Because again HD for input data) (Proof of concept[2]). Thanks. 1. https://users.ece.cmu.edu/~koopman/networks/dsn02/dsn02_koopman.pdf 2. https://github.com/Nefelim4ag/CRC32C_AND_8Byte_parity/commit/cb0fe76eac2ff036468bbc5ea75ebc06cb1e9928 -- Have a nice day, Timofey. -- To unsubscribe from this list: send the line "unsubscribe linux-btrfs" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html