• Chris Mason's avatar
    Btrfs: don't read leaf blocks containing only checksums during truncate · 323ac95b
    Chris Mason authored
    
    
    Checksum items take up a significant portion of the metadata for large files.
    It is possible to avoid reading them during truncates by checking the keys in
    the higher level nodes.
    
    If a given leaf is followed by another leaf where the lowest key is a checksum
    item from the same file, we know we can safely delete the leaf without
    reading it.
    
    For a 32GB file on a 6 drive raid0 array, Btrfs needs 8s to delete
    the file with a cold cache.  It is read bound during the run.
    
    With this change, Btrfs is able to delete the file in 0.5s
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
    323ac95b