Lines Matching refs:block_group
2598 struct btrfs_block_group *block_group; in __exclude_logged_extent() local
2600 block_group = btrfs_lookup_block_group(fs_info, start); in __exclude_logged_extent()
2601 if (!block_group) in __exclude_logged_extent()
2604 btrfs_cache_block_group(block_group, 1); in __exclude_logged_extent()
2609 ret = btrfs_wait_block_group_cache_done(block_group); in __exclude_logged_extent()
2613 ret = btrfs_remove_free_space(block_group, start, num_bytes); in __exclude_logged_extent()
2615 btrfs_put_block_group(block_group); in __exclude_logged_extent()
2788 struct btrfs_block_group *block_group, *tmp; in btrfs_finish_extent_commit() local
2830 list_for_each_entry_safe(block_group, tmp, deleted_bgs, bg_list) { in btrfs_finish_extent_commit()
2836 block_group->start, in btrfs_finish_extent_commit()
2837 block_group->length, in btrfs_finish_extent_commit()
2840 list_del_init(&block_group->bg_list); in btrfs_finish_extent_commit()
2841 btrfs_unfreeze_block_group(block_group); in btrfs_finish_extent_commit()
2842 btrfs_put_block_group(block_group); in btrfs_finish_extent_commit()
3418 struct btrfs_block_group *block_group, in btrfs_lock_cluster() argument
3427 used_bg = cluster->block_group; in btrfs_lock_cluster()
3431 if (used_bg == block_group) in btrfs_lock_cluster()
3448 if (used_bg == cluster->block_group) in btrfs_lock_cluster()
3577 WARN_ON(last_ptr->block_group != cluster_bg); in find_free_extent_clustered()
3711 static int do_allocation_clustered(struct btrfs_block_group *block_group, in do_allocation_clustered() argument
3719 ret = find_free_extent_clustered(block_group, ffe_ctl, bg_ret); in do_allocation_clustered()
3725 return find_free_extent_unclustered(block_group, ffe_ctl); in do_allocation_clustered()
3749 static int do_allocation_zoned(struct btrfs_block_group *block_group, in do_allocation_zoned() argument
3753 struct btrfs_fs_info *fs_info = block_group->fs_info; in do_allocation_zoned()
3754 struct btrfs_space_info *space_info = block_group->space_info; in do_allocation_zoned()
3755 struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl; in do_allocation_zoned()
3756 u64 start = block_group->start; in do_allocation_zoned()
3759 u64 bytenr = block_group->start; in do_allocation_zoned()
3765 ASSERT(btrfs_is_zoned(block_group->fs_info)); in do_allocation_zoned()
3794 spin_lock(&block_group->lock); in do_allocation_zoned()
3795 if (block_group->ro || in do_allocation_zoned()
3796 block_group->alloc_offset == block_group->zone_capacity) { in do_allocation_zoned()
3797 spin_unlock(&block_group->lock); in do_allocation_zoned()
3800 spin_unlock(&block_group->lock); in do_allocation_zoned()
3802 if (!btrfs_zone_activate(block_group)) in do_allocation_zoned()
3806 spin_lock(&block_group->lock); in do_allocation_zoned()
3811 block_group->start == fs_info->treelog_bg || in do_allocation_zoned()
3814 block_group->start == fs_info->data_reloc_bg || in do_allocation_zoned()
3817 if (block_group->ro) { in do_allocation_zoned()
3827 (block_group->used || block_group->reserved)) { in do_allocation_zoned()
3837 (block_group->used || block_group->reserved)) { in do_allocation_zoned()
3842 WARN_ON_ONCE(block_group->alloc_offset > block_group->zone_capacity); in do_allocation_zoned()
3843 avail = block_group->zone_capacity - block_group->alloc_offset; in do_allocation_zoned()
3858 fs_info->treelog_bg = block_group->start; in do_allocation_zoned()
3861 fs_info->data_reloc_bg = block_group->start; in do_allocation_zoned()
3863 ffe_ctl->found_offset = start + block_group->alloc_offset; in do_allocation_zoned()
3864 block_group->alloc_offset += num_bytes; in do_allocation_zoned()
3883 spin_unlock(&block_group->lock); in do_allocation_zoned()
3888 static int do_allocation(struct btrfs_block_group *block_group, in do_allocation() argument
3894 return do_allocation_clustered(block_group, ffe_ctl, bg_ret); in do_allocation()
3896 return do_allocation_zoned(block_group, ffe_ctl, bg_ret); in do_allocation()
3902 static void release_block_group(struct btrfs_block_group *block_group, in release_block_group() argument
3918 BUG_ON(btrfs_bg_flags_to_raid_index(block_group->flags) != in release_block_group()
3920 btrfs_release_block_group(block_group, delalloc); in release_block_group()
4117 if (last_ptr->block_group) in prepare_allocation_clustered()
4194 struct btrfs_block_group *block_group = NULL; in find_free_extent() local
4242 block_group = btrfs_lookup_block_group(fs_info, in find_free_extent()
4251 if (block_group && block_group_bits(block_group, ffe_ctl->flags) && in find_free_extent()
4252 block_group->cached != BTRFS_CACHE_NO) { in find_free_extent()
4254 if (list_empty(&block_group->list) || in find_free_extent()
4255 block_group->ro) { in find_free_extent()
4262 btrfs_put_block_group(block_group); in find_free_extent()
4266 block_group->flags); in find_free_extent()
4267 btrfs_lock_block_group(block_group, in find_free_extent()
4271 } else if (block_group) { in find_free_extent()
4272 btrfs_put_block_group(block_group); in find_free_extent()
4281 list_for_each_entry(block_group, in find_free_extent()
4286 if (unlikely(block_group->ro)) { in find_free_extent()
4288 btrfs_clear_treelog_bg(block_group); in find_free_extent()
4290 btrfs_clear_data_reloc_bg(block_group); in find_free_extent()
4294 btrfs_grab_block_group(block_group, ffe_ctl->delalloc); in find_free_extent()
4295 ffe_ctl->search_start = block_group->start; in find_free_extent()
4302 if (!block_group_bits(block_group, ffe_ctl->flags)) { in find_free_extent()
4313 if ((ffe_ctl->flags & extra) && !(block_group->flags & extra)) in find_free_extent()
4321 btrfs_release_block_group(block_group, ffe_ctl->delalloc); in find_free_extent()
4326 ffe_ctl->cached = btrfs_block_group_done(block_group); in find_free_extent()
4329 ret = btrfs_cache_block_group(block_group, 0); in find_free_extent()
4347 if (unlikely(block_group->cached == BTRFS_CACHE_ERROR)) in find_free_extent()
4351 ret = do_allocation(block_group, ffe_ctl, &bg_ret); in find_free_extent()
4353 if (bg_ret && bg_ret != block_group) { in find_free_extent()
4354 btrfs_release_block_group(block_group, in find_free_extent()
4356 block_group = bg_ret; in find_free_extent()
4370 block_group->start + block_group->length) { in find_free_extent()
4371 btrfs_add_free_space_unused(block_group, in find_free_extent()
4378 btrfs_add_free_space_unused(block_group, in find_free_extent()
4382 ret = btrfs_add_reserved_bytes(block_group, ffe_ctl->ram_bytes, in find_free_extent()
4386 btrfs_add_free_space_unused(block_group, in find_free_extent()
4391 btrfs_inc_block_group_reservations(block_group); in find_free_extent()
4397 trace_btrfs_reserve_extent(block_group, ffe_ctl->search_start, in find_free_extent()
4399 btrfs_release_block_group(block_group, ffe_ctl->delalloc); in find_free_extent()
4402 release_block_group(block_group, ffe_ctl, ffe_ctl->delalloc); in find_free_extent()
4760 struct btrfs_block_group *block_group; in btrfs_alloc_logged_file_extent() local
4774 block_group = btrfs_lookup_block_group(fs_info, ins->objectid); in btrfs_alloc_logged_file_extent()
4775 if (!block_group) in btrfs_alloc_logged_file_extent()
4778 space_info = block_group->space_info; in btrfs_alloc_logged_file_extent()
4780 spin_lock(&block_group->lock); in btrfs_alloc_logged_file_extent()
4782 block_group->reserved += ins->offset; in btrfs_alloc_logged_file_extent()
4783 spin_unlock(&block_group->lock); in btrfs_alloc_logged_file_extent()
4790 btrfs_put_block_group(block_group); in btrfs_alloc_logged_file_extent()
5886 struct btrfs_block_group *block_group; in btrfs_account_ro_block_groups_free_space() local
5895 list_for_each_entry(block_group, &sinfo->ro_bgs, ro_list) { in btrfs_account_ro_block_groups_free_space()
5896 spin_lock(&block_group->lock); in btrfs_account_ro_block_groups_free_space()
5898 if (!block_group->ro) { in btrfs_account_ro_block_groups_free_space()
5899 spin_unlock(&block_group->lock); in btrfs_account_ro_block_groups_free_space()
5903 factor = btrfs_bg_type_to_factor(block_group->flags); in btrfs_account_ro_block_groups_free_space()
5904 free_bytes += (block_group->length - in btrfs_account_ro_block_groups_free_space()
5905 block_group->used) * factor; in btrfs_account_ro_block_groups_free_space()
5907 spin_unlock(&block_group->lock); in btrfs_account_ro_block_groups_free_space()