• Omar Sandoval's avatar
    btrfs: don't advance offset for compressed bios in btrfs_csum_one_bio() · e331f6b1
    Omar Sandoval authored
    btrfs_csum_one_bio() loops over each filesystem block in the bio while
    keeping a cursor of its current logical position in the file in order to
    look up the ordered extent to add the checksums to. However, this
    doesn't make much sense for compressed extents, as a sector on disk does
    not correspond to a sector of decompressed file data. It happens to work
    because:
    
    1) the compressed bio always covers one ordered extent
    2) the size of the bio is always less than the size of the ordered
       extent
    
    However, the second point will not always be true for encoded writes.
    
    Let's add a boolean parameter to btrfs_csum_one_bio() to indicate that
    it can assume that the bio only covers one ordered extent. Since we're
    already changing the signature, let's get rid of the contig parameter
    and make it implied by the offset parameter, similar to the change we
    recently made to btrfs_lookup_bio_sums(). Additionally, let's rename
    nr_sectors to blockcount to make it clear that it's the number of
    filesystem blocks, not the number of 512-byte sectors.
    Reviewed-by: default avatarJosef Bacik <josef@toxicpanda.com>
    Reviewed-by: default avatarNikolay Borisov <nborisov@suse.com>
    Signed-off-by: default avatarOmar Sandoval <osandov@fb.com>
    Signed-off-by: default avatarDavid Sterba <dsterba@suse.com>
    e331f6b1
file-item.c 36.1 KB