Lines Matching refs:block_group

2692 	struct btrfs_block_group *block_group;
2694 block_group = btrfs_lookup_block_group(fs_info, start);
2695 if (!block_group)
2698 ret = btrfs_cache_block_group(block_group, true);
2702 ret = btrfs_remove_free_space(block_group, start, num_bytes);
2704 btrfs_put_block_group(block_group);
2877 struct btrfs_block_group *block_group, *tmp;
2919 list_for_each_entry_safe(block_group, tmp, deleted_bgs, bg_list) {
2925 block_group->start,
2926 block_group->length,
2929 list_del_init(&block_group->bg_list);
2930 btrfs_unfreeze_block_group(block_group);
2931 btrfs_put_block_group(block_group);
3632 struct btrfs_block_group *block_group,
3641 used_bg = cluster->block_group;
3645 if (used_bg == block_group)
3662 if (used_bg == cluster->block_group)
3714 WARN_ON(last_ptr->block_group != cluster_bg);
3820 static int do_allocation_clustered(struct btrfs_block_group *block_group,
3828 ret = find_free_extent_clustered(block_group, ffe_ctl, bg_ret);
3834 return find_free_extent_unclustered(block_group, ffe_ctl);
3849 * block_group::lock
3858 static int do_allocation_zoned(struct btrfs_block_group *block_group,
3862 struct btrfs_fs_info *fs_info = block_group->fs_info;
3863 struct btrfs_space_info *space_info = block_group->space_info;
3864 struct btrfs_free_space_ctl *ctl = block_group->free_space_ctl;
3865 u64 start = block_group->start;
3868 u64 bytenr = block_group->start;
3874 ASSERT(btrfs_is_zoned(block_group->fs_info));
3904 spin_lock(&block_group->lock);
3905 if (block_group->ro || btrfs_zoned_bg_is_full(block_group)) {
3912 spin_unlock(&block_group->lock);
3915 if (!ret && (block_group->flags & BTRFS_BLOCK_GROUP_DATA) &&
3916 !btrfs_zone_activate(block_group)) {
3925 spin_lock(&block_group->lock);
3933 block_group->start == fs_info->treelog_bg ||
3936 block_group->start == fs_info->data_reloc_bg ||
3939 if (block_group->ro ||
3941 test_bit(BLOCK_GROUP_FLAG_ZONED_DATA_RELOC, &block_group->runtime_flags))) {
3951 (block_group->used || block_group->reserved)) {
3961 (block_group->used || block_group->reserved)) {
3966 WARN_ON_ONCE(block_group->alloc_offset > block_group->zone_capacity);
3967 avail = block_group->zone_capacity - block_group->alloc_offset;
3982 fs_info->treelog_bg = block_group->start;
3986 fs_info->data_reloc_bg = block_group->start;
4002 set_bit(BLOCK_GROUP_FLAG_ZONED_DATA_RELOC, &block_group->runtime_flags);
4005 ffe_ctl->found_offset = start + block_group->alloc_offset;
4006 block_group->alloc_offset += num_bytes;
4025 spin_unlock(&block_group->lock);
4030 static int do_allocation(struct btrfs_block_group *block_group,
4036 return do_allocation_clustered(block_group, ffe_ctl, bg_ret);
4038 return do_allocation_zoned(block_group, ffe_ctl, bg_ret);
4044 static void release_block_group(struct btrfs_block_group *block_group,
4059 BUG_ON(btrfs_bg_flags_to_raid_index(block_group->flags) !=
4061 btrfs_release_block_group(block_group, delalloc);
4305 if (last_ptr->block_group)
4336 struct btrfs_block_group *block_group;
4339 list_for_each_entry(block_group, &fs_info->zone_active_bgs, active_bg_list) {
4344 u64 avail = block_group->zone_capacity - block_group->alloc_offset;
4346 if (block_group_bits(block_group, ffe_ctl->flags) &&
4348 ffe_ctl->hint_byte = block_group->start;
4406 struct btrfs_block_group *block_group = NULL;
4452 block_group = btrfs_lookup_block_group(fs_info,
4461 if (block_group && block_group_bits(block_group, ffe_ctl->flags) &&
4462 block_group->cached != BTRFS_CACHE_NO) {
4464 if (list_empty(&block_group->list) ||
4465 block_group->ro) {
4472 btrfs_put_block_group(block_group);
4476 block_group->flags);
4477 btrfs_lock_block_group(block_group,
4482 } else if (block_group) {
4483 btrfs_put_block_group(block_group);
4493 list_for_each_entry(block_group,
4499 if (unlikely(block_group->ro)) {
4501 btrfs_clear_treelog_bg(block_group);
4503 btrfs_clear_data_reloc_bg(block_group);
4507 btrfs_grab_block_group(block_group, ffe_ctl->delalloc);
4508 ffe_ctl->search_start = block_group->start;
4515 if (!block_group_bits(block_group, ffe_ctl->flags)) {
4526 if ((ffe_ctl->flags & extra) && !(block_group->flags & extra))
4534 btrfs_release_block_group(block_group, ffe_ctl->delalloc);
4539 trace_find_free_extent_have_block_group(root, ffe_ctl, block_group);
4540 ffe_ctl->cached = btrfs_block_group_done(block_group);
4543 ret = btrfs_cache_block_group(block_group, false);
4561 if (unlikely(block_group->cached == BTRFS_CACHE_ERROR)) {
4567 if (!find_free_extent_check_size_class(ffe_ctl, block_group))
4571 ret = do_allocation(block_group, ffe_ctl, &bg_ret);
4575 if (bg_ret && bg_ret != block_group) {
4576 btrfs_release_block_group(block_group, ffe_ctl->delalloc);
4577 block_group = bg_ret;
4586 block_group->start + block_group->length) {
4587 btrfs_add_free_space_unused(block_group,
4594 btrfs_add_free_space_unused(block_group,
4598 ret = btrfs_add_reserved_bytes(block_group, ffe_ctl->ram_bytes,
4603 btrfs_add_free_space_unused(block_group,
4608 btrfs_inc_block_group_reservations(block_group);
4614 trace_btrfs_reserve_extent(block_group, ffe_ctl);
4615 btrfs_release_block_group(block_group, ffe_ctl->delalloc);
4621 btrfs_wait_block_group_cache_progress(block_group,
4627 release_block_group(block_group, ffe_ctl, ffe_ctl->delalloc);
4998 struct btrfs_block_group *block_group;
5019 block_group = btrfs_lookup_block_group(fs_info, ins->objectid);
5020 if (!block_group)
5023 space_info = block_group->space_info;
5025 spin_lock(&block_group->lock);
5027 block_group->reserved += ins->offset;
5028 spin_unlock(&block_group->lock);
5036 btrfs_put_block_group(block_group);