Lines Matching refs:space_info

79 				     struct btrfs_space_info *space_info,
82 struct btrfs_space_info *space_info,
544 spin_lock(&block_group->space_info->lock); in caching_thread()
548 block_group->space_info->bytes_used += bytes_used >> 1; in caching_thread()
550 spin_unlock(&block_group->space_info->lock); in caching_thread()
651 spin_lock(&cache->space_info->lock); in cache_block_group()
655 cache->space_info->bytes_used += bytes_used >> 1; in cache_block_group()
657 spin_unlock(&cache->space_info->lock); in cache_block_group()
725 struct list_head *head = &info->space_info; in __find_space_info()
744 struct btrfs_space_info *space_info; in add_pinned_bytes() local
756 space_info = __find_space_info(fs_info, flags); in add_pinned_bytes()
757 ASSERT(space_info); in add_pinned_bytes()
758 percpu_counter_add_batch(&space_info->total_bytes_pinned, num_bytes, in add_pinned_bytes()
768 struct list_head *head = &info->space_info; in btrfs_clear_space_info_full()
2466 struct btrfs_space_info *space_info; in cleanup_ref_head() local
2475 space_info = __find_space_info(fs_info, flags); in cleanup_ref_head()
2476 ASSERT(space_info); in cleanup_ref_head()
2477 percpu_counter_add_batch(&space_info->total_bytes_pinned, in cleanup_ref_head()
2773 if (global_rsv->space_info->full) { in btrfs_check_space_for_delayed_refs()
3884 struct btrfs_space_info *space_info; in create_space_info() local
3888 space_info = kzalloc(sizeof(*space_info), GFP_NOFS); in create_space_info()
3889 if (!space_info) in create_space_info()
3892 ret = percpu_counter_init(&space_info->total_bytes_pinned, 0, in create_space_info()
3895 kfree(space_info); in create_space_info()
3900 INIT_LIST_HEAD(&space_info->block_groups[i]); in create_space_info()
3901 init_rwsem(&space_info->groups_sem); in create_space_info()
3902 spin_lock_init(&space_info->lock); in create_space_info()
3903 space_info->flags = flags & BTRFS_BLOCK_GROUP_TYPE_MASK; in create_space_info()
3904 space_info->force_alloc = CHUNK_ALLOC_NO_FORCE; in create_space_info()
3905 init_waitqueue_head(&space_info->wait); in create_space_info()
3906 INIT_LIST_HEAD(&space_info->ro_bgs); in create_space_info()
3907 INIT_LIST_HEAD(&space_info->tickets); in create_space_info()
3908 INIT_LIST_HEAD(&space_info->priority_tickets); in create_space_info()
3910 ret = kobject_init_and_add(&space_info->kobj, &space_info_ktype, in create_space_info()
3912 alloc_name(space_info->flags)); in create_space_info()
3914 percpu_counter_destroy(&space_info->total_bytes_pinned); in create_space_info()
3915 kfree(space_info); in create_space_info()
3919 list_add_rcu(&space_info->list, &info->space_info); in create_space_info()
3921 info->data_sinfo = space_info; in create_space_info()
3929 struct btrfs_space_info **space_info) in update_space_info() argument
3949 *space_info = found; in update_space_info()
4309 struct list_head *head = &info->space_info; in force_metadata_allocation()
4448 struct btrfs_space_info *space_info; in do_chunk_alloc() local
4457 space_info = __find_space_info(fs_info, flags); in do_chunk_alloc()
4458 ASSERT(space_info); in do_chunk_alloc()
4461 spin_lock(&space_info->lock); in do_chunk_alloc()
4462 if (force < space_info->force_alloc) in do_chunk_alloc()
4463 force = space_info->force_alloc; in do_chunk_alloc()
4464 should_alloc = should_alloc_chunk(fs_info, space_info, force); in do_chunk_alloc()
4465 if (space_info->full) { in do_chunk_alloc()
4471 spin_unlock(&space_info->lock); in do_chunk_alloc()
4474 spin_unlock(&space_info->lock); in do_chunk_alloc()
4476 } else if (space_info->chunk_alloc) { in do_chunk_alloc()
4484 spin_unlock(&space_info->lock); in do_chunk_alloc()
4489 space_info->chunk_alloc = 1; in do_chunk_alloc()
4491 spin_unlock(&space_info->lock); in do_chunk_alloc()
4504 if (btrfs_mixed_space_info(space_info)) in do_chunk_alloc()
4528 spin_lock(&space_info->lock); in do_chunk_alloc()
4531 space_info->full = 1; in do_chunk_alloc()
4538 space_info->force_alloc = CHUNK_ALLOC_NO_FORCE; in do_chunk_alloc()
4540 space_info->chunk_alloc = 0; in do_chunk_alloc()
4541 spin_unlock(&space_info->lock); in do_chunk_alloc()
4566 struct btrfs_space_info *space_info, u64 bytes, in can_overcommit() argument
4578 if (space_info->flags & BTRFS_BLOCK_GROUP_DATA) in can_overcommit()
4586 used = btrfs_space_info_used(space_info, false); in can_overcommit()
4597 if (used + space_size >= space_info->total_bytes) in can_overcommit()
4600 used += space_info->bytes_may_use; in can_overcommit()
4623 if (used + bytes < space_info->total_bytes + avail) in can_overcommit()
4671 struct btrfs_space_info *space_info; in shrink_delalloc() local
4685 space_info = __find_space_info(fs_info, BTRFS_BLOCK_GROUP_METADATA); in shrink_delalloc()
4719 spin_lock(&space_info->lock); in shrink_delalloc()
4720 if (list_empty(&space_info->tickets) && in shrink_delalloc()
4721 list_empty(&space_info->priority_tickets)) { in shrink_delalloc()
4722 spin_unlock(&space_info->lock); in shrink_delalloc()
4725 spin_unlock(&space_info->lock); in shrink_delalloc()
4758 struct btrfs_space_info *space_info) in may_commit_transaction() argument
4769 spin_lock(&space_info->lock); in may_commit_transaction()
4770 if (!list_empty(&space_info->priority_tickets)) in may_commit_transaction()
4771 ticket = list_first_entry(&space_info->priority_tickets, in may_commit_transaction()
4773 else if (!list_empty(&space_info->tickets)) in may_commit_transaction()
4774 ticket = list_first_entry(&space_info->tickets, in may_commit_transaction()
4777 spin_unlock(&space_info->lock); in may_commit_transaction()
4783 if (__percpu_counter_compare(&space_info->total_bytes_pinned, in may_commit_transaction()
4792 if (space_info != delayed_rsv->space_info) in may_commit_transaction()
4802 if (__percpu_counter_compare(&space_info->total_bytes_pinned, in may_commit_transaction()
4822 struct btrfs_space_info *space_info, u64 num_bytes, in flush_space() argument
4865 ret = may_commit_transaction(fs_info, space_info); in flush_space()
4872 trace_btrfs_flush_space(fs_info, space_info->flags, num_bytes, state, in flush_space()
4879 struct btrfs_space_info *space_info, in btrfs_calc_reclaim_metadata_size() argument
4887 list_for_each_entry(ticket, &space_info->tickets, list) in btrfs_calc_reclaim_metadata_size()
4889 list_for_each_entry(ticket, &space_info->priority_tickets, list) in btrfs_calc_reclaim_metadata_size()
4895 if (can_overcommit(fs_info, space_info, to_reclaim, in btrfs_calc_reclaim_metadata_size()
4899 used = btrfs_space_info_used(space_info, true); in btrfs_calc_reclaim_metadata_size()
4901 if (can_overcommit(fs_info, space_info, SZ_1M, in btrfs_calc_reclaim_metadata_size()
4903 expected = div_factor_fine(space_info->total_bytes, 95); in btrfs_calc_reclaim_metadata_size()
4905 expected = div_factor_fine(space_info->total_bytes, 90); in btrfs_calc_reclaim_metadata_size()
4911 to_reclaim = min(to_reclaim, space_info->bytes_may_use + in btrfs_calc_reclaim_metadata_size()
4912 space_info->bytes_reserved); in btrfs_calc_reclaim_metadata_size()
4917 struct btrfs_space_info *space_info, in need_do_async_reclaim() argument
4920 u64 thresh = div_factor_fine(space_info->total_bytes, 98); in need_do_async_reclaim()
4923 if ((space_info->bytes_used + space_info->bytes_reserved) >= thresh) in need_do_async_reclaim()
4926 if (!btrfs_calc_reclaim_metadata_size(fs_info, space_info, in need_do_async_reclaim()
4954 struct btrfs_space_info *space_info; in btrfs_async_reclaim_metadata_space() local
4961 space_info = __find_space_info(fs_info, BTRFS_BLOCK_GROUP_METADATA); in btrfs_async_reclaim_metadata_space()
4963 spin_lock(&space_info->lock); in btrfs_async_reclaim_metadata_space()
4964 to_reclaim = btrfs_calc_reclaim_metadata_size(fs_info, space_info, in btrfs_async_reclaim_metadata_space()
4967 space_info->flush = 0; in btrfs_async_reclaim_metadata_space()
4968 spin_unlock(&space_info->lock); in btrfs_async_reclaim_metadata_space()
4971 last_tickets_id = space_info->tickets_id; in btrfs_async_reclaim_metadata_space()
4972 spin_unlock(&space_info->lock); in btrfs_async_reclaim_metadata_space()
4976 flush_space(fs_info, space_info, to_reclaim, flush_state); in btrfs_async_reclaim_metadata_space()
4977 spin_lock(&space_info->lock); in btrfs_async_reclaim_metadata_space()
4978 if (list_empty(&space_info->tickets)) { in btrfs_async_reclaim_metadata_space()
4979 space_info->flush = 0; in btrfs_async_reclaim_metadata_space()
4980 spin_unlock(&space_info->lock); in btrfs_async_reclaim_metadata_space()
4984 space_info, in btrfs_async_reclaim_metadata_space()
4986 if (last_tickets_id == space_info->tickets_id) { in btrfs_async_reclaim_metadata_space()
4989 last_tickets_id = space_info->tickets_id; in btrfs_async_reclaim_metadata_space()
4998 wake_all_tickets(&space_info->tickets); in btrfs_async_reclaim_metadata_space()
4999 space_info->flush = 0; in btrfs_async_reclaim_metadata_space()
5004 spin_unlock(&space_info->lock); in btrfs_async_reclaim_metadata_space()
5014 struct btrfs_space_info *space_info, in priority_reclaim_metadata_space() argument
5020 spin_lock(&space_info->lock); in priority_reclaim_metadata_space()
5021 to_reclaim = btrfs_calc_reclaim_metadata_size(fs_info, space_info, in priority_reclaim_metadata_space()
5024 spin_unlock(&space_info->lock); in priority_reclaim_metadata_space()
5027 spin_unlock(&space_info->lock); in priority_reclaim_metadata_space()
5030 flush_space(fs_info, space_info, to_reclaim, flush_state); in priority_reclaim_metadata_space()
5032 spin_lock(&space_info->lock); in priority_reclaim_metadata_space()
5034 spin_unlock(&space_info->lock); in priority_reclaim_metadata_space()
5037 spin_unlock(&space_info->lock); in priority_reclaim_metadata_space()
5050 struct btrfs_space_info *space_info, in wait_reserve_ticket() argument
5057 spin_lock(&space_info->lock); in wait_reserve_ticket()
5064 spin_unlock(&space_info->lock); in wait_reserve_ticket()
5069 spin_lock(&space_info->lock); in wait_reserve_ticket()
5077 space_info->bytes_may_use -= num_bytes; in wait_reserve_ticket()
5079 space_info->flags, num_bytes, 0); in wait_reserve_ticket()
5081 spin_unlock(&space_info->lock); in wait_reserve_ticket()
5101 struct btrfs_space_info *space_info, in __reserve_metadata_bytes() argument
5113 spin_lock(&space_info->lock); in __reserve_metadata_bytes()
5115 used = btrfs_space_info_used(space_info, true); in __reserve_metadata_bytes()
5122 if (used + orig_bytes <= space_info->total_bytes) { in __reserve_metadata_bytes()
5123 space_info->bytes_may_use += orig_bytes; in __reserve_metadata_bytes()
5125 space_info->flags, orig_bytes, 1); in __reserve_metadata_bytes()
5127 } else if (can_overcommit(fs_info, space_info, orig_bytes, flush, in __reserve_metadata_bytes()
5129 space_info->bytes_may_use += orig_bytes; in __reserve_metadata_bytes()
5131 space_info->flags, orig_bytes, 1); in __reserve_metadata_bytes()
5147 list_add_tail(&ticket.list, &space_info->tickets); in __reserve_metadata_bytes()
5148 if (!space_info->flush) { in __reserve_metadata_bytes()
5149 space_info->flush = 1; in __reserve_metadata_bytes()
5151 space_info->flags, in __reserve_metadata_bytes()
5159 &space_info->priority_tickets); in __reserve_metadata_bytes()
5161 } else if (!ret && space_info->flags & BTRFS_BLOCK_GROUP_METADATA) { in __reserve_metadata_bytes()
5169 need_do_async_reclaim(fs_info, space_info, in __reserve_metadata_bytes()
5172 trace_btrfs_trigger_flush(fs_info, space_info->flags, in __reserve_metadata_bytes()
5178 spin_unlock(&space_info->lock); in __reserve_metadata_bytes()
5183 return wait_reserve_ticket(fs_info, space_info, &ticket, in __reserve_metadata_bytes()
5187 priority_reclaim_metadata_space(fs_info, space_info, &ticket); in __reserve_metadata_bytes()
5188 spin_lock(&space_info->lock); in __reserve_metadata_bytes()
5192 space_info->bytes_may_use -= num_bytes; in __reserve_metadata_bytes()
5194 space_info->flags, in __reserve_metadata_bytes()
5201 spin_unlock(&space_info->lock); in __reserve_metadata_bytes()
5230 ret = __reserve_metadata_bytes(fs_info, block_rsv->space_info, in reserve_metadata_bytes()
5240 block_rsv->space_info->flags, in reserve_metadata_bytes()
5244 dump_space_info(fs_info, block_rsv->space_info, in reserve_metadata_bytes()
5305 if (global_rsv->space_info != dest->space_info) in btrfs_cond_migrate_bytes()
5328 struct btrfs_space_info *space_info, in space_info_add_old_bytes() argument
5337 spin_lock(&space_info->lock); in space_info_add_old_bytes()
5338 head = &space_info->priority_tickets; in space_info_add_old_bytes()
5345 used = btrfs_space_info_used(space_info, true); in space_info_add_old_bytes()
5346 if (used - num_bytes >= space_info->total_bytes) in space_info_add_old_bytes()
5357 !can_overcommit(fs_info, space_info, 0, flush, false)) in space_info_add_old_bytes()
5363 space_info->tickets_id++; in space_info_add_old_bytes()
5371 if (num_bytes && head == &space_info->priority_tickets) { in space_info_add_old_bytes()
5372 head = &space_info->tickets; in space_info_add_old_bytes()
5376 space_info->bytes_may_use -= num_bytes; in space_info_add_old_bytes()
5378 space_info->flags, num_bytes, 0); in space_info_add_old_bytes()
5379 spin_unlock(&space_info->lock); in space_info_add_old_bytes()
5388 struct btrfs_space_info *space_info, in space_info_add_new_bytes() argument
5392 struct list_head *head = &space_info->priority_tickets; in space_info_add_new_bytes()
5400 space_info->flags, in space_info_add_new_bytes()
5404 space_info->bytes_may_use += ticket->bytes; in space_info_add_new_bytes()
5406 space_info->tickets_id++; in space_info_add_new_bytes()
5410 space_info->flags, in space_info_add_new_bytes()
5412 space_info->bytes_may_use += num_bytes; in space_info_add_new_bytes()
5418 if (num_bytes && head == &space_info->priority_tickets) { in space_info_add_new_bytes()
5419 head = &space_info->tickets; in space_info_add_new_bytes()
5429 struct btrfs_space_info *space_info = block_rsv->space_info; in block_rsv_release_bytes() local
5472 space_info_add_old_bytes(fs_info, space_info, in block_rsv_release_bytes()
5506 rsv->space_info = __find_space_info(fs_info, in btrfs_init_metadata_block_rsv()
5688 block_rsv->space_info != global_rsv->space_info) in btrfs_block_rsv_release()
5696 struct btrfs_space_info *sinfo = block_rsv->space_info; in update_global_block_rsv()
5745 struct btrfs_space_info *space_info; in init_global_block_rsv() local
5747 space_info = __find_space_info(fs_info, BTRFS_BLOCK_GROUP_SYSTEM); in init_global_block_rsv()
5748 fs_info->chunk_block_rsv.space_info = space_info; in init_global_block_rsv()
5750 space_info = __find_space_info(fs_info, BTRFS_BLOCK_GROUP_METADATA); in init_global_block_rsv()
5751 fs_info->global_block_rsv.space_info = space_info; in init_global_block_rsv()
5752 fs_info->trans_block_rsv.space_info = space_info; in init_global_block_rsv()
5753 fs_info->empty_block_rsv.space_info = space_info; in init_global_block_rsv()
5754 fs_info->delayed_block_rsv.space_info = space_info; in init_global_block_rsv()
5832 rsv->space_info = __find_space_info(fs_info, in btrfs_subvolume_reserve_metadata()
6100 spin_lock(&cache->space_info->lock); in update_block_group()
6113 cache->space_info->bytes_reserved -= num_bytes; in update_block_group()
6114 cache->space_info->bytes_used += num_bytes; in update_block_group()
6115 cache->space_info->disk_used += num_bytes * factor; in update_block_group()
6117 spin_unlock(&cache->space_info->lock); in update_block_group()
6122 cache->space_info->bytes_pinned += num_bytes; in update_block_group()
6123 cache->space_info->bytes_used -= num_bytes; in update_block_group()
6124 cache->space_info->disk_used -= num_bytes * factor; in update_block_group()
6126 spin_unlock(&cache->space_info->lock); in update_block_group()
6129 cache->space_info->flags, in update_block_group()
6131 percpu_counter_add_batch(&cache->space_info->total_bytes_pinned, in update_block_group()
6190 spin_lock(&cache->space_info->lock); in pin_down_extent()
6193 cache->space_info->bytes_pinned += num_bytes; in pin_down_extent()
6196 cache->space_info->bytes_reserved -= num_bytes; in pin_down_extent()
6199 spin_unlock(&cache->space_info->lock); in pin_down_extent()
6202 cache->space_info->flags, num_bytes, 1); in pin_down_extent()
6203 percpu_counter_add_batch(&cache->space_info->total_bytes_pinned, in pin_down_extent()
6354 struct btrfs_space_info *space_info = bg->space_info; in btrfs_wait_block_group_reservations() local
6371 down_write(&space_info->groups_sem); in btrfs_wait_block_group_reservations()
6372 up_write(&space_info->groups_sem); in btrfs_wait_block_group_reservations()
6392 struct btrfs_space_info *space_info = cache->space_info; in btrfs_add_reserved_bytes() local
6395 spin_lock(&space_info->lock); in btrfs_add_reserved_bytes()
6401 space_info->bytes_reserved += num_bytes; in btrfs_add_reserved_bytes()
6404 "space_info", space_info->flags, in btrfs_add_reserved_bytes()
6406 space_info->bytes_may_use -= ram_bytes; in btrfs_add_reserved_bytes()
6411 spin_unlock(&space_info->lock); in btrfs_add_reserved_bytes()
6430 struct btrfs_space_info *space_info = cache->space_info; in btrfs_free_reserved_bytes() local
6433 spin_lock(&space_info->lock); in btrfs_free_reserved_bytes()
6436 space_info->bytes_readonly += num_bytes; in btrfs_free_reserved_bytes()
6438 space_info->bytes_reserved -= num_bytes; in btrfs_free_reserved_bytes()
6443 spin_unlock(&space_info->lock); in btrfs_free_reserved_bytes()
6482 struct btrfs_space_info *space_info, u64 *empty_cluster) in fetch_cluster_info() argument
6487 if (btrfs_mixed_space_info(space_info)) in fetch_cluster_info()
6490 if (space_info->flags & BTRFS_BLOCK_GROUP_METADATA) { in fetch_cluster_info()
6496 } else if ((space_info->flags & BTRFS_BLOCK_GROUP_DATA) && in fetch_cluster_info()
6510 struct btrfs_space_info *space_info; in unpin_extent_range() local
6529 cache->space_info, in unpin_extent_range()
6545 space_info = cache->space_info; in unpin_extent_range()
6560 spin_lock(&space_info->lock); in unpin_extent_range()
6563 space_info->bytes_pinned -= len; in unpin_extent_range()
6566 space_info->flags, len, 0); in unpin_extent_range()
6567 space_info->max_extent_size = 0; in unpin_extent_range()
6568 percpu_counter_add_batch(&space_info->total_bytes_pinned, in unpin_extent_range()
6571 space_info->bytes_readonly += len; in unpin_extent_range()
6576 global_rsv->space_info == space_info) { in unpin_extent_range()
6584 space_info->bytes_may_use += to_add; in unpin_extent_range()
6589 space_info->flags, in unpin_extent_range()
6596 space_info_add_new_bytes(fs_info, space_info, in unpin_extent_range()
6599 spin_unlock(&space_info->lock); in unpin_extent_range()
7237 struct btrfs_space_info *space_info; in find_free_extent() local
7254 space_info = __find_space_info(fs_info, flags); in find_free_extent()
7255 if (!space_info) { in find_free_extent()
7270 if (unlikely(space_info->max_extent_size)) { in find_free_extent()
7271 spin_lock(&space_info->lock); in find_free_extent()
7272 if (space_info->max_extent_size && in find_free_extent()
7273 num_bytes > space_info->max_extent_size) { in find_free_extent()
7274 ins->offset = space_info->max_extent_size; in find_free_extent()
7275 spin_unlock(&space_info->lock); in find_free_extent()
7277 } else if (space_info->max_extent_size) { in find_free_extent()
7280 spin_unlock(&space_info->lock); in find_free_extent()
7283 last_ptr = fetch_cluster_info(fs_info, space_info, &empty_cluster); in find_free_extent()
7313 down_read(&space_info->groups_sem); in find_free_extent()
7323 up_read(&space_info->groups_sem); in find_free_extent()
7338 down_read(&space_info->groups_sem); in find_free_extent()
7339 list_for_each_entry(block_group, &space_info->block_groups[index], in find_free_extent()
7597 up_read(&space_info->groups_sem); in find_free_extent()
7699 spin_lock(&space_info->lock); in find_free_extent()
7700 space_info->max_extent_size = max_extent_size; in find_free_extent()
7701 spin_unlock(&space_info->lock); in find_free_extent()
8080 struct btrfs_space_info *space_info; in btrfs_alloc_logged_file_extent() local
8097 space_info = block_group->space_info; in btrfs_alloc_logged_file_extent()
8098 spin_lock(&space_info->lock); in btrfs_alloc_logged_file_extent()
8100 space_info->bytes_reserved += ins->offset; in btrfs_alloc_logged_file_extent()
8103 spin_unlock(&space_info->lock); in btrfs_alloc_logged_file_extent()
8207 block_rsv->space_info == global_rsv->space_info) { in use_block_rsv()
9200 struct btrfs_space_info *sinfo = cache->space_info; in inc_block_group_ro()
9295 alloc_flags = get_alloc_profile(fs_info, cache->space_info->flags); in btrfs_inc_block_group_ro()
9357 struct btrfs_space_info *sinfo = cache->space_info; in btrfs_dec_block_group_ro()
9385 struct btrfs_space_info *space_info; in btrfs_can_relocate() local
9417 space_info = block_group->space_info; in btrfs_can_relocate()
9418 spin_lock(&space_info->lock); in btrfs_can_relocate()
9420 full = space_info->full; in btrfs_can_relocate()
9429 if ((space_info->total_bytes != block_group->key.offset) && in btrfs_can_relocate()
9430 (btrfs_space_info_used(space_info, false) + min_free < in btrfs_can_relocate()
9431 space_info->total_bytes)) { in btrfs_can_relocate()
9432 spin_unlock(&space_info->lock); in btrfs_can_relocate()
9435 spin_unlock(&space_info->lock); in btrfs_can_relocate()
9648 struct btrfs_space_info *space_info; in btrfs_free_block_groups() local
9680 down_write(&block_group->space_info->groups_sem); in btrfs_free_block_groups()
9682 up_write(&block_group->space_info->groups_sem); in btrfs_free_block_groups()
9714 while (!list_empty(&info->space_info)) { in btrfs_free_block_groups()
9717 space_info = list_entry(info->space_info.next, in btrfs_free_block_groups()
9725 if (WARN_ON(space_info->bytes_pinned > 0 || in btrfs_free_block_groups()
9726 space_info->bytes_reserved > 0 || in btrfs_free_block_groups()
9727 space_info->bytes_may_use > 0)) in btrfs_free_block_groups()
9728 dump_space_info(info, space_info, 0, 0); in btrfs_free_block_groups()
9729 list_del(&space_info->list); in btrfs_free_block_groups()
9732 kobj = space_info->block_group_kobjs[i]; in btrfs_free_block_groups()
9733 space_info->block_group_kobjs[i] = NULL; in btrfs_free_block_groups()
9739 kobject_del(&space_info->kobj); in btrfs_free_block_groups()
9740 kobject_put(&space_info->kobj); in btrfs_free_block_groups()
9748 struct btrfs_space_info *space_info; in btrfs_add_raid_kobjects() local
9759 space_info = __find_space_info(fs_info, rkobj->flags); in btrfs_add_raid_kobjects()
9762 ret = kobject_add(&rkobj->kobj, &space_info->kobj, in btrfs_add_raid_kobjects()
9776 struct btrfs_space_info *space_info = cache->space_info; in link_block_group() local
9781 down_write(&space_info->groups_sem); in link_block_group()
9782 if (list_empty(&space_info->block_groups[index])) in link_block_group()
9784 list_add_tail(&cache->list, &space_info->block_groups[index]); in link_block_group()
9785 up_write(&space_info->groups_sem); in link_block_group()
9800 space_info->block_group_kobjs[index] = &rkobj->kobj; in link_block_group()
9907 struct btrfs_space_info *space_info; in btrfs_read_block_groups() local
10029 cache->bytes_super, &space_info); in btrfs_read_block_groups()
10031 cache->space_info = space_info; in btrfs_read_block_groups()
10044 list_for_each_entry_rcu(space_info, &info->space_info, list) { in btrfs_read_block_groups()
10045 if (!(get_alloc_profile(info, space_info->flags) & in btrfs_read_block_groups()
10057 &space_info->block_groups[BTRFS_RAID_RAID0], in btrfs_read_block_groups()
10061 &space_info->block_groups[BTRFS_RAID_SINGLE], in btrfs_read_block_groups()
10159 cache->space_info = __find_space_info(fs_info, cache->flags); in btrfs_make_block_group()
10160 ASSERT(cache->space_info); in btrfs_make_block_group()
10175 cache->bytes_super, &cache->space_info); in btrfs_make_block_group()
10333 down_write(&block_group->space_info->groups_sem); in btrfs_remove_block_group()
10339 if (list_empty(&block_group->space_info->block_groups[index])) { in btrfs_remove_block_group()
10340 kobj = block_group->space_info->block_group_kobjs[index]; in btrfs_remove_block_group()
10341 block_group->space_info->block_group_kobjs[index] = NULL; in btrfs_remove_block_group()
10344 up_write(&block_group->space_info->groups_sem); in btrfs_remove_block_group()
10387 spin_lock(&block_group->space_info->lock); in btrfs_remove_block_group()
10391 WARN_ON(block_group->space_info->total_bytes in btrfs_remove_block_group()
10393 WARN_ON(block_group->space_info->bytes_readonly in btrfs_remove_block_group()
10395 WARN_ON(block_group->space_info->disk_total in btrfs_remove_block_group()
10398 block_group->space_info->total_bytes -= block_group->key.offset; in btrfs_remove_block_group()
10399 block_group->space_info->bytes_readonly -= block_group->key.offset; in btrfs_remove_block_group()
10400 block_group->space_info->disk_total -= block_group->key.offset * factor; in btrfs_remove_block_group()
10402 spin_unlock(&block_group->space_info->lock); in btrfs_remove_block_group()
10543 struct btrfs_space_info *space_info; in btrfs_delete_unused_bgs() local
10560 space_info = block_group->space_info; in btrfs_delete_unused_bgs()
10562 if (ret || btrfs_mixed_space_info(space_info)) { in btrfs_delete_unused_bgs()
10571 down_write(&space_info->groups_sem); in btrfs_delete_unused_bgs()
10585 up_write(&space_info->groups_sem); in btrfs_delete_unused_bgs()
10592 up_write(&space_info->groups_sem); in btrfs_delete_unused_bgs()
10645 spin_lock(&space_info->lock); in btrfs_delete_unused_bgs()
10648 space_info->bytes_pinned -= block_group->pinned; in btrfs_delete_unused_bgs()
10649 space_info->bytes_readonly += block_group->pinned; in btrfs_delete_unused_bgs()
10650 percpu_counter_add_batch(&space_info->total_bytes_pinned, in btrfs_delete_unused_bgs()
10656 spin_unlock(&space_info->lock); in btrfs_delete_unused_bgs()