• Josef Bacik's avatar
    Btrfs: reuse the extent_map we found when calling btrfs_get_extent · 16d299ac
    Josef Bacik authored
    In btrfs_get_block_direct we call btrfs_get_extent to lookup the extent for the
    range that we are looking for.  If we don't find an extent, btrfs_get_extent
    will insert a extent_map for that area and mark it as a hole.  So it does the
    job of allocating a new extent map and inserting it into the io tree.  But if
    we're creating a new extent we free it up and redo all of that work.  So instead
    pass the em to btrfs_new_extent_direct(), and if it will work just allocate the
    disk space and set it up properly and bypass the freeing/allocating of a new
    extent map and the expensive operation of inserting the thing into the io_tree.
    Thanks,
    Signed-off-by: default avatarJosef Bacik <josef@redhat.com>
    16d299ac
inode.c 200 KB