Loading fs/btrfs/extent-tree.c +13 −11 Original line number Diff line number Diff line Loading @@ -7714,18 +7714,20 @@ static noinline int find_free_extent(struct btrfs_root *orig_root, last_ptr->fragmented = 1; spin_unlock(&last_ptr->lock); } spin_lock(&block_group->free_space_ctl->tree_lock); if (cached && block_group->free_space_ctl->free_space < if (cached) { struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl; spin_lock(&ctl->tree_lock); if (ctl->free_space < num_bytes + empty_cluster + empty_size) { if (block_group->free_space_ctl->free_space > max_extent_size) max_extent_size = block_group->free_space_ctl->free_space; spin_unlock(&block_group->free_space_ctl->tree_lock); if (ctl->free_space > max_extent_size) max_extent_size = ctl->free_space; spin_unlock(&ctl->tree_lock); goto loop; } spin_unlock(&block_group->free_space_ctl->tree_lock); spin_unlock(&ctl->tree_lock); } offset = btrfs_find_space_for_alloc(block_group, search_start, num_bytes, empty_size, Loading Loading
fs/btrfs/extent-tree.c +13 −11 Original line number Diff line number Diff line Loading @@ -7714,18 +7714,20 @@ static noinline int find_free_extent(struct btrfs_root *orig_root, last_ptr->fragmented = 1; spin_unlock(&last_ptr->lock); } spin_lock(&block_group->free_space_ctl->tree_lock); if (cached && block_group->free_space_ctl->free_space < if (cached) { struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl; spin_lock(&ctl->tree_lock); if (ctl->free_space < num_bytes + empty_cluster + empty_size) { if (block_group->free_space_ctl->free_space > max_extent_size) max_extent_size = block_group->free_space_ctl->free_space; spin_unlock(&block_group->free_space_ctl->tree_lock); if (ctl->free_space > max_extent_size) max_extent_size = ctl->free_space; spin_unlock(&ctl->tree_lock); goto loop; } spin_unlock(&block_group->free_space_ctl->tree_lock); spin_unlock(&ctl->tree_lock); } offset = btrfs_find_space_for_alloc(block_group, search_start, num_bytes, empty_size, Loading