Btrfs: don't loop in allocator for space cache
authorJosef Bacik <jbacik@fb.com>
Fri, 25 Sep 2015 20:13:11 +0000 (16:13 -0400)
committerChris Mason <clm@fb.com>
Thu, 22 Oct 2015 01:51:46 +0000 (18:51 -0700)
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>
fs/btrfs/extent-tree.c

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