Browse Source

Btrfs: don't loop in allocator for space cache

The space cache needs to have contiguous allocations, and the allocator tries to
make allocations by reducing the amount of bytes requested and re-searching.
But this just makes us waste time when we are very fragmented, so if we can't
find our space just exit, don't bother trying to search again.  Thanks,

Signed-off-by: Josef Bacik <jbacik@fb.com>
Signed-off-by: Chris Mason <clm@fb.com>
Josef Bacik 10 years ago
parent
commit
36af4e0737
1 changed files with 1 additions and 1 deletions
  1. 1 1
      fs/btrfs/extent-tree.c

+ 1 - 1
fs/btrfs/extent-tree.c

@@ -7337,7 +7337,7 @@ int btrfs_reserve_extent(struct btrfs_root *root,
 			 u64 empty_size, u64 hint_byte,
 			 u64 empty_size, u64 hint_byte,
 			 struct btrfs_key *ins, int is_data, int delalloc)
 			 struct btrfs_key *ins, int is_data, int delalloc)
 {
 {
-	bool final_tried = false;
+	bool final_tried = num_bytes == min_alloc_size;
 	u64 flags;
 	u64 flags;
 	int ret;
 	int ret;