Skip to content
  • Chris Mason's avatar
    Btrfs: make sure compressed bios don't complete too soon · af09abfe
    Chris Mason authored
    
    
    When writing a compressed extent, a number of bios are created that
    point to a single struct compressed_bio.  At end_io time an atomic counter in
    the compressed_bio struct makes sure that all of the bios have finished
    before final end_io processing is done.
    
    But when multiple bios are needed to write a compressed extent, the
    counter was being incremented after the first bio was sent to submit_bio.
    It is possible the bio will complete before the counter is incremented,
    making the end_io handler free the compressed_bio struct before
    processing is finished.
    
    The fix is to increment the atomic counter before bio submission,
    both for compressed reads and writes.
    
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
    af09abfe