- if (root == extent_root) {
- int nr;
- BUG_ON(info->extent_tree_prealloc_nr == 0);
- BUG_ON(num_blocks != 1);
- ins->offset = 1;
- info->extent_tree_prealloc_nr--;
- nr = info->extent_tree_prealloc_nr;
- ins->objectid = info->extent_tree_prealloc[nr];
- info->extent_tree_insert[info->extent_tree_insert_nr++] =
- ins->objectid;
- ret = update_block_group(trans, root,
- ins->objectid, ins->offset, 1, 0, 0);
- BUG_ON(ret);
- return 0;
- }
-
- /*
- * if we're doing a data allocation, preallocate room in the
- * extent tree first. This way the extent tree blocks end up
- * in the correct block group.
- */
- if (data) {
- ret = find_free_extent(trans, root, 0, 0,
- search_end, 0, &prealloc_key, 0, 0, 0);
- BUG_ON(ret);
- if (ret)
- return ret;
- exclude_nr = info->extent_tree_prealloc_nr;
- exclude_start = info->extent_tree_prealloc[exclude_nr - 1];
- }
-
- /* do the real allocation */
- ret = find_free_extent(trans, root, num_blocks, search_start,
- search_end, hint_block, ins,
- exclude_start, exclude_nr, data);
+ WARN_ON(num_blocks < 1);
+ ret = find_free_extent(trans, root, num_blocks, empty_size,
+ search_start, search_end, hint_block, ins,
+ trans->alloc_exclude_start,
+ trans->alloc_exclude_nr, data);