• Mark Fasheh's avatar
    btrfs: Handle unaligned length in extent_same · e1d227a4
    Mark Fasheh authored
    The extent-same code rejects requests with an unaligned length. This
    poses a problem when we want to dedupe the tail extent of files as we
    skip cloning the portion between i_size and the extent boundary.
    
    If we don't clone the entire extent, it won't be deleted. So the
    combination of these behaviors winds up giving us worst-case dedupe on
    many files.
    
    We can fix this by allowing a length that extents to i_size and
    internally aligining those to the end of the block. This is what
    btrfs_ioctl_clone() so we can just copy that check over.
    Signed-off-by: default avatarMark Fasheh <mfasheh@suse.de>
    Signed-off-by: default avatarChris Mason <clm@fb.com>
    e1d227a4
ioctl.c 129 KB