• Qu Wenruo's avatar
    btrfs: scrub: introduce structure for new BTRFS_STRIPE_LEN based interface · 2af2aaf9
    Qu Wenruo authored
    This patch introduces the following structures:
    
    - scrub_sector_verification
      Contains all the needed info to verify one sector (data or metadata).
    
    - scrub_stripe
      Contains all needed members (mostly bitmap based) to scrub one stripe
      (with a length of BTRFS_STRIPE_LEN).
    
    The basic idea is, we keep the existing per-device scrub behavior, but
    merge all the scrub_bio/scrub_bio into one generic structure, and read
    the full BTRFS_STRIPE_LEN stripe on the first try.
    
    This means we will read some sectors which are not scrub target, but
    that's fine. At dev-replace time we only writeback the utilized and good
    sectors, and for read-repair we only writeback the repaired sectors.
    
    With every read submitted in BTRFS_STRIPE_LEN, the need for complex bio
    form shaping would be gone.
    Although to get the same performance of the old scrub behavior, we would
    need to submit the initial read for two stripes at once.
    Signed-off-by: default avatarQu Wenruo <wqu@suse.com>
    Reviewed-by: default avatarDavid Sterba <dsterba@suse.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    2af2aaf9
scrub.h 856 Bytes