• Chris Mason's avatar
    Btrfs: fix errors handling cached state in set/clear_extent_bit · 42daec29
    Chris Mason authored
    Both set and clear_extent_bit allow passing a cached
    state struct to reduce rbtree search times.  clear_extent_bit
    was improperly bypassing some of the checks around making sure
    the extent state fields were correct for a given operation.
    
    The fix used here (from Yan Zheng) is to use the hit_next
    goto target instead of jumping all the way down to start clearing
    bits without making sure the cached state was exactly correct
    for the operation we were doing.
    
    This also fixes up the setting of the start variable for both
    ops in the case where we find an overlapping extent that
    begins before the range we want to change.  In both cases
    we were incorrectly going backwards from the original
    requested change.
    Signed-off-by: default avatarChris Mason <chris.mason@oracle.com>
    42daec29
extent_io.c 92.2 KB