• Kent Overstreet's avatar
    bcachefs: Erasure coding fixes & refactoring · 2a3731e3
    Kent Overstreet authored
     - Originally bch_extent_stripe_ptr didn't contain the block index,
       instead we'd have to search through the stripe pointers to figure out
       which pointer matched. When the block field was added to
       bch_extent_stripe_ptr, not all of the code was updated to use it.
       This patch fixes that, and we also now verify that field where it
       makes sense.
    
     - The ec_stripe_buf_init/exit() functions have been improved, and are
       now used by the bch2_ec_read_extent() (recovery read) path.
    
     - get_stripe_key() is now used by bch2_ec_read_extent().
    
     - We now have a getter and setter for checksums within a stripe, like
       we had previously for block sector counts, and ec_generate_checksums
       and ec_validate_checksums are now quite a bit smaller and cleaner.
    
    ec.c still needs a lot of work, but this patch is slowly moving things
    in the right direction.
    Signed-off-by: default avatarKent Overstreet <kent.overstreet@gmail.com>
    Signed-off-by: default avatarKent Overstreet <kent.overstreet@linux.dev>
    2a3731e3
ec.c 37.7 KB