]> git.baikalelectronics.ru Git - kernel.git/commit
Btrfs: reuse the extent_map we found when calling btrfs_get_extent
authorJosef Bacik <josef@redhat.com>
Wed, 6 Apr 2011 18:53:07 +0000 (14:53 -0400)
committerJosef Bacik <josef@redhat.com>
Fri, 8 Apr 2011 17:00:41 +0000 (13:00 -0400)
commit2716b76db7f89d049b1203b7bee3da1e52694f5f
tree95358c2fdd7af672ec68c18fb43e2e90a7cd4551
parent20c397a82c3e324306c6686121a554ee500ccf14
Btrfs: reuse the extent_map we found when calling btrfs_get_extent

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: Josef Bacik <josef@redhat.com>
fs/btrfs/inode.c