Lines Matching refs:fs_info

234 	set_extent_bits(&root->fs_info->freed_extents[0],  in add_excluded_extent()
236 set_extent_bits(&root->fs_info->freed_extents[1], in add_excluded_extent()
249 clear_extent_bits(&root->fs_info->freed_extents[0], in free_excluded_extents()
251 clear_extent_bits(&root->fs_info->freed_extents[1], in free_excluded_extents()
274 ret = btrfs_rmap_block(&root->fs_info->mapping_tree, in exclude_super_stripes()
382 struct btrfs_fs_info *fs_info; in caching_thread() local
395 fs_info = block_group->fs_info; in caching_thread()
396 extent_root = fs_info->extent_root; in caching_thread()
420 down_read(&fs_info->commit_root_sem); in caching_thread()
431 if (btrfs_fs_closing(fs_info) > 1) { in caching_thread()
444 rwsem_is_contended(&fs_info->commit_root_sem)) { in caching_thread()
447 up_read(&fs_info->commit_root_sem); in caching_thread()
485 fs_info, last, in caching_thread()
489 fs_info->tree_root->nodesize; in caching_thread()
502 total_found += add_new_free_space(block_group, fs_info, last, in caching_thread()
514 up_read(&fs_info->commit_root_sem); in caching_thread()
536 struct btrfs_fs_info *fs_info = cache->fs_info; in cache_block_group() local
591 if (fs_info->mount_opt & BTRFS_MOUNT_SPACE_CACHE) { in cache_block_group()
593 ret = load_free_space_cache(fs_info, cache); in cache_block_group()
616 free_excluded_extents(fs_info->extent_root, cache); in cache_block_group()
641 down_write(&fs_info->commit_root_sem); in cache_block_group()
643 list_add_tail(&caching_ctl->list, &fs_info->caching_block_groups); in cache_block_group()
644 up_write(&fs_info->commit_root_sem); in cache_block_group()
648 btrfs_queue_work(fs_info->caching_workers, &caching_ctl->work); in cache_block_group()
728 ret = btrfs_search_slot(NULL, root->fs_info->extent_root, &key, path, in btrfs_lookup_data_extent()
762 if (metadata && !btrfs_fs_incompat(root->fs_info, SKINNY_METADATA)) { in btrfs_lookup_extent_info()
784 ret = btrfs_search_slot(trans, root->fs_info->extent_root, in btrfs_lookup_extent_info()
1491 bool skinny_metadata = btrfs_fs_incompat(root->fs_info, in lookup_inline_extent_backref()
1902 ret = btrfs_map_block(root->fs_info, REQ_DISCARD, in btrfs_discard_extent()
1949 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_inc_extent_ref() local
1955 ret = btrfs_add_delayed_tree_ref(fs_info, trans, bytenr, in btrfs_inc_extent_ref()
1960 ret = btrfs_add_delayed_data_ref(fs_info, trans, bytenr, in btrfs_inc_extent_ref()
1976 struct btrfs_fs_info *fs_info = root->fs_info; in __btrfs_inc_extent_ref() local
1989 if (!is_fstree(root_objectid) || !root->fs_info->quota_enabled) in __btrfs_inc_extent_ref()
1995 ret = insert_inline_extent_backref(trans, fs_info->extent_root, path, in __btrfs_inc_extent_ref()
2006 ASSERT(root->fs_info->quota_enabled); in __btrfs_inc_extent_ref()
2015 ret = btrfs_qgroup_record_ref(trans, fs_info, root_objectid, in __btrfs_inc_extent_ref()
2039 ret = btrfs_qgroup_record_ref(trans, fs_info, root_objectid, in __btrfs_inc_extent_ref()
2048 ret = insert_extent_backref(trans, root->fs_info->extent_root, in __btrfs_inc_extent_ref()
2142 if (metadata && !btrfs_fs_incompat(root->fs_info, SKINNY_METADATA)) in run_delayed_extent_op()
2162 ret = btrfs_search_slot(trans, root->fs_info->extent_root, &key, in run_delayed_extent_op()
2198 ret = convert_extent_item_v0(trans, root->fs_info->extent_root, in run_delayed_extent_op()
2229 bool skinny_metadata = btrfs_fs_incompat(root->fs_info, in run_delayed_tree_ref()
2362 struct btrfs_fs_info *fs_info = root->fs_info; in __btrfs_run_delayed_refs() local
2407 btrfs_merge_delayed_refs(trans, fs_info, delayed_refs, in __btrfs_run_delayed_refs()
2417 btrfs_check_delayed_seq(fs_info, delayed_refs, ref->seq)) { in __btrfs_run_delayed_refs()
2470 btrfs_debug(fs_info, "run_delayed_extent_op returned %d", ret); in __btrfs_run_delayed_refs()
2530 btrfs_debug(fs_info, "run_one_delayed_ref returned %d", ret); in __btrfs_run_delayed_refs()
2569 avg = fs_info->avg_delayed_ref_runtime * 3 + runtime; in __btrfs_run_delayed_refs()
2570 fs_info->avg_delayed_ref_runtime = avg >> 2; /* div by 4 */ in __btrfs_run_delayed_refs()
2625 if (!btrfs_fs_incompat(root->fs_info, SKINNY_METADATA)) in heads_to_leaves()
2647 (u64)btrfs_super_csum_size(root->fs_info->super_copy)); in btrfs_csum_bytes_to_leaves()
2672 global_rsv = &root->fs_info->global_block_rsv; in btrfs_check_space_for_delayed_refs()
2693 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_should_throttle_delayed_refs() local
2700 avg_runtime = fs_info->avg_delayed_ref_runtime; in btrfs_should_throttle_delayed_refs()
2762 async->root = root->fs_info->tree_root; in btrfs_async_run_delayed_refs()
2774 btrfs_queue_work(root->fs_info->extent_workers, &async->work); in btrfs_async_run_delayed_refs()
2808 if (root == root->fs_info->extent_root) in btrfs_run_delayed_refs()
2809 root = root->fs_info->tree_root; in btrfs_run_delayed_refs()
2867 ret = btrfs_delayed_qgroup_accounting(trans, root->fs_info); in btrfs_run_delayed_refs()
2892 ret = btrfs_add_delayed_extent_op(root->fs_info, trans, bytenr, in btrfs_set_disk_extent_flags()
2971 struct btrfs_root *extent_root = root->fs_info->extent_root; in check_committed_ref()
3166 struct btrfs_root *extent_root = root->fs_info->extent_root; in write_one_cache_group()
3193 spin_lock(&root->fs_info->block_group_cache_lock); in next_block_group()
3199 spin_unlock(&root->fs_info->block_group_cache_lock); in next_block_group()
3201 cache = btrfs_lookup_first_block_group(root->fs_info, in next_block_group()
3213 spin_unlock(&root->fs_info->block_group_cache_lock); in next_block_group()
3221 struct btrfs_root *root = block_group->fs_info->tree_root; in cache_save_setup()
3295 &root->fs_info->global_block_rsv); in cache_save_setup()
3649 block_group = btrfs_lookup_block_group(root->fs_info, bytenr); in btrfs_extent_readonly()
3747 static void set_avail_alloc_bits(struct btrfs_fs_info *fs_info, u64 flags) in set_avail_alloc_bits() argument
3752 write_seqlock(&fs_info->profiles_lock); in set_avail_alloc_bits()
3754 fs_info->avail_data_alloc_bits |= extra_flags; in set_avail_alloc_bits()
3756 fs_info->avail_metadata_alloc_bits |= extra_flags; in set_avail_alloc_bits()
3758 fs_info->avail_system_alloc_bits |= extra_flags; in set_avail_alloc_bits()
3759 write_sequnlock(&fs_info->profiles_lock); in set_avail_alloc_bits()
3768 static u64 get_restripe_target(struct btrfs_fs_info *fs_info, u64 flags) in get_restripe_target() argument
3770 struct btrfs_balance_control *bctl = fs_info->balance_ctl; in get_restripe_target()
3799 u64 num_devices = root->fs_info->fs_devices->rw_devices; in btrfs_reduce_alloc_profile()
3807 spin_lock(&root->fs_info->balance_lock); in btrfs_reduce_alloc_profile()
3808 target = get_restripe_target(root->fs_info, flags); in btrfs_reduce_alloc_profile()
3812 spin_unlock(&root->fs_info->balance_lock); in btrfs_reduce_alloc_profile()
3816 spin_unlock(&root->fs_info->balance_lock); in btrfs_reduce_alloc_profile()
3853 seq = read_seqbegin(&root->fs_info->profiles_lock); in get_alloc_profile()
3856 flags |= root->fs_info->avail_data_alloc_bits; in get_alloc_profile()
3858 flags |= root->fs_info->avail_system_alloc_bits; in get_alloc_profile()
3860 flags |= root->fs_info->avail_metadata_alloc_bits; in get_alloc_profile()
3861 } while (read_seqretry(&root->fs_info->profiles_lock, seq)); in get_alloc_profile()
3873 else if (root == root->fs_info->chunk_root) in btrfs_get_alloc_profile()
3890 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_check_data_free_space() local
3904 data_sinfo = fs_info->data_sinfo; in btrfs_check_data_free_space()
3943 ret = do_chunk_alloc(trans, root->fs_info->extent_root, in btrfs_check_data_free_space()
3957 data_sinfo = fs_info->data_sinfo; in btrfs_check_data_free_space()
3975 !atomic_read(&root->fs_info->open_ioctl_trans)) { in btrfs_check_data_free_space()
3979 btrfs_start_delalloc_roots(fs_info, 0, -1); in btrfs_check_data_free_space()
3980 btrfs_wait_ordered_roots(fs_info, -1); in btrfs_check_data_free_space()
3997 mutex_lock(&root->fs_info->cleaner_delayed_iput_mutex); in btrfs_check_data_free_space()
3998 mutex_unlock(&root->fs_info->cleaner_delayed_iput_mutex); in btrfs_check_data_free_space()
4005 trace_btrfs_space_reservation(root->fs_info, in btrfs_check_data_free_space()
4014 trace_btrfs_space_reservation(root->fs_info, "space_info", in btrfs_check_data_free_space()
4033 data_sinfo = root->fs_info->data_sinfo; in btrfs_free_reserved_data_space()
4037 trace_btrfs_space_reservation(root->fs_info, "space_info", in btrfs_free_reserved_data_space()
4063 struct btrfs_block_rsv *global_rsv = &root->fs_info->global_block_rsv; in should_alloc_chunk()
4084 thresh = btrfs_super_total_bytes(root->fs_info->super_copy); in should_alloc_chunk()
4105 num_dev = root->fs_info->fs_devices->rw_devices; in get_system_chunk_thresh()
4122 info = __find_space_info(root->fs_info, BTRFS_BLOCK_GROUP_SYSTEM); in check_system_chunk()
4130 btrfs_info(root->fs_info, "left=%llu, need=%llu, flags=%llu", in check_system_chunk()
4138 flags = btrfs_get_alloc_profile(root->fs_info->chunk_root, 0); in check_system_chunk()
4147 struct btrfs_fs_info *fs_info = extent_root->fs_info; in do_chunk_alloc() local
4155 space_info = __find_space_info(extent_root->fs_info, flags); in do_chunk_alloc()
4157 ret = update_space_info(extent_root->fs_info, flags, in do_chunk_alloc()
4187 mutex_lock(&fs_info->chunk_mutex); in do_chunk_alloc()
4196 mutex_unlock(&fs_info->chunk_mutex); in do_chunk_alloc()
4215 if (flags & BTRFS_BLOCK_GROUP_DATA && fs_info->metadata_ratio) { in do_chunk_alloc()
4216 fs_info->data_chunk_allocations++; in do_chunk_alloc()
4217 if (!(fs_info->data_chunk_allocations % in do_chunk_alloc()
4218 fs_info->metadata_ratio)) in do_chunk_alloc()
4219 force_metadata_allocation(fs_info); in do_chunk_alloc()
4243 mutex_unlock(&fs_info->chunk_mutex); in do_chunk_alloc()
4251 struct btrfs_block_rsv *global_rsv = &root->fs_info->global_block_rsv; in can_overcommit()
4274 spin_lock(&root->fs_info->free_chunk_lock); in can_overcommit()
4275 avail = root->fs_info->free_chunk_space; in can_overcommit()
4276 spin_unlock(&root->fs_info->free_chunk_lock); in can_overcommit()
4307 struct super_block *sb = root->fs_info->sb; in btrfs_writeback_inodes_sb_nr()
4320 btrfs_start_delalloc_roots(root->fs_info, 0, nr_items); in btrfs_writeback_inodes_sb_nr()
4322 btrfs_wait_ordered_roots(root->fs_info, nr_items); in btrfs_writeback_inodes_sb_nr()
4362 block_rsv = &root->fs_info->delalloc_block_rsv; in shrink_delalloc()
4366 &root->fs_info->delalloc_bytes); in shrink_delalloc()
4371 btrfs_wait_ordered_roots(root->fs_info, items); in shrink_delalloc()
4384 max_reclaim = atomic_read(&root->fs_info->async_delalloc_pages); in shrink_delalloc()
4393 wait_event(root->fs_info->async_submit_wait, in shrink_delalloc()
4394 atomic_read(&root->fs_info->async_delalloc_pages) <= in shrink_delalloc()
4410 btrfs_wait_ordered_roots(root->fs_info, items); in shrink_delalloc()
4417 &root->fs_info->delalloc_bytes); in shrink_delalloc()
4435 struct btrfs_block_rsv *delayed_rsv = &root->fs_info->delayed_block_rsv; in may_commit_transaction()
4517 ret = do_chunk_alloc(trans, root->fs_info->extent_root, in flush_space()
4574 struct btrfs_fs_info *fs_info, u64 used) in need_do_async_reclaim() argument
4582 return (used >= thresh && !btrfs_fs_closing(fs_info) && in need_do_async_reclaim()
4583 !test_bit(BTRFS_FS_STATE_REMOUNTING, &fs_info->fs_state)); in need_do_async_reclaim()
4587 struct btrfs_fs_info *fs_info, in btrfs_need_do_async_reclaim() argument
4605 if (need_do_async_reclaim(space_info, fs_info, used)) { in btrfs_need_do_async_reclaim()
4616 struct btrfs_fs_info *fs_info; in btrfs_async_reclaim_metadata_space() local
4621 fs_info = container_of(work, struct btrfs_fs_info, async_reclaim_work); in btrfs_async_reclaim_metadata_space()
4622 space_info = __find_space_info(fs_info, BTRFS_BLOCK_GROUP_METADATA); in btrfs_async_reclaim_metadata_space()
4624 to_reclaim = btrfs_calc_reclaim_metadata_size(fs_info->fs_root, in btrfs_async_reclaim_metadata_space()
4631 flush_space(fs_info->fs_root, space_info, to_reclaim, in btrfs_async_reclaim_metadata_space()
4634 if (!btrfs_need_do_async_reclaim(space_info, fs_info, in btrfs_async_reclaim_metadata_space()
4712 trace_btrfs_space_reservation(root->fs_info, in reserve_metadata_bytes()
4735 trace_btrfs_space_reservation(root->fs_info, "space_info", in reserve_metadata_bytes()
4759 if (!root->fs_info->log_root_recovering && in reserve_metadata_bytes()
4760 need_do_async_reclaim(space_info, root->fs_info, used) && in reserve_metadata_bytes()
4761 !work_busy(&root->fs_info->async_reclaim_work)) in reserve_metadata_bytes()
4763 &root->fs_info->async_reclaim_work); in reserve_metadata_bytes()
4796 &root->fs_info->global_block_rsv; in reserve_metadata_bytes()
4803 trace_btrfs_space_reservation(root->fs_info, in reserve_metadata_bytes()
4824 if (root == root->fs_info->csum_root && trans->adding_csums) in get_block_rsv()
4827 if (root == root->fs_info->uuid_root) in get_block_rsv()
4834 block_rsv = &root->fs_info->empty_block_rsv; in get_block_rsv()
4866 int btrfs_cond_migrate_bytes(struct btrfs_fs_info *fs_info, in btrfs_cond_migrate_bytes() argument
4870 struct btrfs_block_rsv *global_rsv = &fs_info->global_block_rsv; in btrfs_cond_migrate_bytes()
4891 static void block_rsv_release_bytes(struct btrfs_fs_info *fs_info, in block_rsv_release_bytes() argument
4928 trace_btrfs_space_reservation(fs_info, "space_info", in block_rsv_release_bytes()
4959 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_alloc_block_rsv() local
4966 block_rsv->space_info = __find_space_info(fs_info, in btrfs_alloc_block_rsv()
5062 struct btrfs_block_rsv *global_rsv = &root->fs_info->global_block_rsv; in btrfs_block_rsv_release()
5066 block_rsv_release_bytes(root->fs_info, block_rsv, global_rsv, in btrfs_block_rsv_release()
5075 static u64 calc_global_metadata_size(struct btrfs_fs_info *fs_info) in calc_global_metadata_size() argument
5081 int csum_size = btrfs_super_csum_size(fs_info->super_copy); in calc_global_metadata_size()
5083 sinfo = __find_space_info(fs_info, BTRFS_BLOCK_GROUP_DATA); in calc_global_metadata_size()
5088 sinfo = __find_space_info(fs_info, BTRFS_BLOCK_GROUP_METADATA); in calc_global_metadata_size()
5095 num_bytes = (data_used >> fs_info->sb->s_blocksize_bits) * in calc_global_metadata_size()
5102 return ALIGN(num_bytes, fs_info->extent_root->nodesize << 10); in calc_global_metadata_size()
5105 static void update_global_block_rsv(struct btrfs_fs_info *fs_info) in update_global_block_rsv() argument
5107 struct btrfs_block_rsv *block_rsv = &fs_info->global_block_rsv; in update_global_block_rsv()
5111 num_bytes = calc_global_metadata_size(fs_info); in update_global_block_rsv()
5126 trace_btrfs_space_reservation(fs_info, "space_info", in update_global_block_rsv()
5133 trace_btrfs_space_reservation(fs_info, "space_info", in update_global_block_rsv()
5143 static void init_global_block_rsv(struct btrfs_fs_info *fs_info) in init_global_block_rsv() argument
5147 space_info = __find_space_info(fs_info, BTRFS_BLOCK_GROUP_SYSTEM); in init_global_block_rsv()
5148 fs_info->chunk_block_rsv.space_info = space_info; in init_global_block_rsv()
5150 space_info = __find_space_info(fs_info, BTRFS_BLOCK_GROUP_METADATA); in init_global_block_rsv()
5151 fs_info->global_block_rsv.space_info = space_info; in init_global_block_rsv()
5152 fs_info->delalloc_block_rsv.space_info = space_info; in init_global_block_rsv()
5153 fs_info->trans_block_rsv.space_info = space_info; in init_global_block_rsv()
5154 fs_info->empty_block_rsv.space_info = space_info; in init_global_block_rsv()
5155 fs_info->delayed_block_rsv.space_info = space_info; in init_global_block_rsv()
5157 fs_info->extent_root->block_rsv = &fs_info->global_block_rsv; in init_global_block_rsv()
5158 fs_info->csum_root->block_rsv = &fs_info->global_block_rsv; in init_global_block_rsv()
5159 fs_info->dev_root->block_rsv = &fs_info->global_block_rsv; in init_global_block_rsv()
5160 fs_info->tree_root->block_rsv = &fs_info->global_block_rsv; in init_global_block_rsv()
5161 if (fs_info->quota_root) in init_global_block_rsv()
5162 fs_info->quota_root->block_rsv = &fs_info->global_block_rsv; in init_global_block_rsv()
5163 fs_info->chunk_root->block_rsv = &fs_info->chunk_block_rsv; in init_global_block_rsv()
5165 update_global_block_rsv(fs_info); in init_global_block_rsv()
5168 static void release_global_block_rsv(struct btrfs_fs_info *fs_info) in release_global_block_rsv() argument
5170 block_rsv_release_bytes(fs_info, &fs_info->global_block_rsv, NULL, in release_global_block_rsv()
5172 WARN_ON(fs_info->delalloc_block_rsv.size > 0); in release_global_block_rsv()
5173 WARN_ON(fs_info->delalloc_block_rsv.reserved > 0); in release_global_block_rsv()
5174 WARN_ON(fs_info->trans_block_rsv.size > 0); in release_global_block_rsv()
5175 WARN_ON(fs_info->trans_block_rsv.reserved > 0); in release_global_block_rsv()
5176 WARN_ON(fs_info->chunk_block_rsv.size > 0); in release_global_block_rsv()
5177 WARN_ON(fs_info->chunk_block_rsv.reserved > 0); in release_global_block_rsv()
5178 WARN_ON(fs_info->delayed_block_rsv.size > 0); in release_global_block_rsv()
5179 WARN_ON(fs_info->delayed_block_rsv.reserved > 0); in release_global_block_rsv()
5191 trace_btrfs_space_reservation(root->fs_info, "transaction", in btrfs_trans_release_metadata()
5211 trace_btrfs_space_reservation(root->fs_info, "orphan", in btrfs_orphan_reserve_metadata()
5220 trace_btrfs_space_reservation(root->fs_info, "orphan", in btrfs_orphan_release_metadata()
5247 struct btrfs_block_rsv *global_rsv = &root->fs_info->global_block_rsv; in btrfs_subvolume_reserve_metadata()
5249 if (root->fs_info->quota_enabled) { in btrfs_subvolume_reserve_metadata()
5262 rsv->space_info = __find_space_info(root->fs_info, in btrfs_subvolume_reserve_metadata()
5376 struct btrfs_block_rsv *block_rsv = &root->fs_info->delalloc_block_rsv; in btrfs_delalloc_reserve_metadata()
5398 btrfs_transaction_in_commit(root->fs_info)) in btrfs_delalloc_reserve_metadata()
5433 if (root->fs_info->quota_enabled) { in btrfs_delalloc_reserve_metadata()
5441 if (root->fs_info->quota_enabled) in btrfs_delalloc_reserve_metadata()
5459 trace_btrfs_space_reservation(root->fs_info, "delalloc", in btrfs_delalloc_reserve_metadata()
5521 trace_btrfs_space_reservation(root->fs_info, "delalloc", in btrfs_delalloc_reserve_metadata()
5557 trace_btrfs_space_reservation(root->fs_info, "delalloc", in btrfs_delalloc_release_metadata()
5560 btrfs_block_rsv_release(root, &root->fs_info->delalloc_block_rsv, in btrfs_delalloc_release_metadata()
5620 struct btrfs_fs_info *info = root->fs_info; in update_block_group()
5725 spin_lock(&root->fs_info->block_group_cache_lock); in first_logical_byte()
5726 bytenr = root->fs_info->first_logical_byte; in first_logical_byte()
5727 spin_unlock(&root->fs_info->block_group_cache_lock); in first_logical_byte()
5732 cache = btrfs_lookup_first_block_group(root->fs_info, search_start); in first_logical_byte()
5757 set_extent_dirty(root->fs_info->pinned_extents, bytenr, in pin_down_extent()
5772 cache = btrfs_lookup_block_group(root->fs_info, bytenr); in btrfs_pin_extent()
5790 cache = btrfs_lookup_block_group(root->fs_info, bytenr); in btrfs_pin_extent_for_log_replay()
5816 block_group = btrfs_lookup_block_group(root->fs_info, start); in __exclude_logged_extent()
5863 if (!btrfs_fs_incompat(log->fs_info, MIXED_GROUPS)) in btrfs_exclude_logged_extents()
5922 trace_btrfs_space_reservation(cache->fs_info, in btrfs_update_reserved_bytes()
5948 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_prepare_extent_commit() local
5953 down_write(&fs_info->commit_root_sem); in btrfs_prepare_extent_commit()
5956 &fs_info->caching_block_groups, list) { in btrfs_prepare_extent_commit()
5967 if (fs_info->pinned_extents == &fs_info->freed_extents[0]) in btrfs_prepare_extent_commit()
5968 fs_info->pinned_extents = &fs_info->freed_extents[1]; in btrfs_prepare_extent_commit()
5970 fs_info->pinned_extents = &fs_info->freed_extents[0]; in btrfs_prepare_extent_commit()
5972 up_write(&fs_info->commit_root_sem); in btrfs_prepare_extent_commit()
5974 update_global_block_rsv(fs_info); in btrfs_prepare_extent_commit()
5980 struct btrfs_fs_info *fs_info = root->fs_info; in unpin_extent_range() local
5983 struct btrfs_block_rsv *global_rsv = &fs_info->global_block_rsv; in unpin_extent_range()
5993 cache = btrfs_lookup_block_group(fs_info, start); in unpin_extent_range()
6042 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_finish_extent_commit() local
6051 if (fs_info->pinned_extents == &fs_info->freed_extents[0]) in btrfs_finish_extent_commit()
6052 unpin = &fs_info->freed_extents[1]; in btrfs_finish_extent_commit()
6054 unpin = &fs_info->freed_extents[0]; in btrfs_finish_extent_commit()
6057 mutex_lock(&fs_info->unused_bg_unpin_mutex); in btrfs_finish_extent_commit()
6061 mutex_unlock(&fs_info->unused_bg_unpin_mutex); in btrfs_finish_extent_commit()
6071 mutex_unlock(&fs_info->unused_bg_unpin_mutex); in btrfs_finish_extent_commit()
6078 static void add_pinned_bytes(struct btrfs_fs_info *fs_info, u64 num_bytes, in add_pinned_bytes() argument
6093 space_info = __find_space_info(fs_info, flags); in add_pinned_bytes()
6109 struct btrfs_fs_info *info = root->fs_info; in __btrfs_free_extent()
6123 bool skinny_metadata = btrfs_fs_incompat(root->fs_info, in __btrfs_free_extent()
6325 add_pinned_bytes(root->fs_info, -num_bytes, owner_objectid, in __btrfs_free_extent()
6463 ret = btrfs_add_delayed_tree_ref(root->fs_info, trans, in btrfs_free_tree_block()
6483 cache = btrfs_lookup_block_group(root->fs_info, buf->start); in btrfs_free_tree_block()
6501 add_pinned_bytes(root->fs_info, buf->len, in btrfs_free_tree_block()
6518 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_free_extent() local
6523 add_pinned_bytes(root->fs_info, num_bytes, owner, root_objectid); in btrfs_free_extent()
6535 ret = btrfs_add_delayed_tree_ref(fs_info, trans, bytenr, in btrfs_free_extent()
6540 ret = btrfs_add_delayed_data_ref(fs_info, trans, bytenr, in btrfs_free_extent()
6725 struct btrfs_root *root = orig_root->fs_info->extent_root; in find_free_extent()
6748 space_info = __find_space_info(root->fs_info, flags); in find_free_extent()
6750 btrfs_err(root->fs_info, "No space info for %llu", flags); in find_free_extent()
6762 last_ptr = &root->fs_info->meta_alloc_cluster; in find_free_extent()
6769 last_ptr = &root->fs_info->data_alloc_cluster; in find_free_extent()
6786 block_group = btrfs_lookup_block_group(root->fs_info, in find_free_extent()
7198 sinfo = __find_space_info(root->fs_info, flags); in btrfs_reserve_extent()
7199 btrfs_err(root->fs_info, "allocation failed flags %llu, wanted %llu", in btrfs_reserve_extent()
7216 cache = btrfs_lookup_block_group(root->fs_info, start); in __btrfs_free_reserved_extent()
7218 btrfs_err(root->fs_info, "Unable to find block group for %llu", in __btrfs_free_reserved_extent()
7258 struct btrfs_fs_info *fs_info = root->fs_info; in alloc_reserved_file_extent() local
7278 ret = btrfs_insert_empty_item(trans, fs_info->extent_root, path, in alloc_reserved_file_extent()
7313 ret = btrfs_qgroup_record_ref(trans, fs_info, root_objectid, in alloc_reserved_file_extent()
7321 btrfs_err(fs_info, "update block group failed for %llu %llu", in alloc_reserved_file_extent()
7337 struct btrfs_fs_info *fs_info = root->fs_info; in alloc_reserved_tree_block() local
7345 bool skinny_metadata = btrfs_fs_incompat(root->fs_info, in alloc_reserved_tree_block()
7359 ret = btrfs_insert_empty_item(trans, fs_info->extent_root, path, in alloc_reserved_tree_block()
7401 ret = btrfs_qgroup_record_ref(trans, fs_info, root_objectid, in alloc_reserved_tree_block()
7411 btrfs_err(fs_info, "update block group failed for %llu %llu", in alloc_reserved_tree_block()
7429 ret = btrfs_add_delayed_data_ref(root->fs_info, trans, ins->objectid, in btrfs_alloc_reserved_file_extent()
7453 if (!btrfs_fs_incompat(root->fs_info, MIXED_GROUPS)) { in btrfs_alloc_logged_file_extent()
7459 block_group = btrfs_lookup_block_group(root->fs_info, ins->objectid); in btrfs_alloc_logged_file_extent()
7484 clean_tree_block(trans, root->fs_info, buf); in btrfs_init_new_buffer()
7517 struct btrfs_block_rsv *global_rsv = &root->fs_info->global_block_rsv; in use_block_rsv()
7535 update_global_block_rsv(root->fs_info); in use_block_rsv()
7566 static void unuse_block_rsv(struct btrfs_fs_info *fs_info, in unuse_block_rsv() argument
7570 block_rsv_release_bytes(fs_info, block_rsv, NULL, 0); in unuse_block_rsv()
7593 bool skinny_metadata = btrfs_fs_incompat(root->fs_info, in btrfs_alloc_tree_block()
7645 ret = btrfs_add_delayed_tree_ref(root->fs_info, trans, in btrfs_alloc_tree_block()
7662 unuse_block_rsv(root->fs_info, block_rsv, blocksize); in btrfs_alloc_tree_block()
7793 ret = btrfs_qgroup_record_ref(trans, root->fs_info, in account_leaf_items()
7882 if (!root->fs_info->quota_enabled) in account_shared_subtree()
7941 ret = btrfs_qgroup_record_ref(trans, root->fs_info, in account_shared_subtree()
8097 next = btrfs_find_tree_block(root->fs_info, bytenr); in do_walk_down()
8118 btrfs_err(root->fs_info, "Missing references."); in do_walk_down()
8196 root->fs_info->sb->s_id, ret); in do_walk_down()
8288 root->fs_info->sb->s_id, ret); in walk_up_proc()
8298 clean_tree_block(trans, root->fs_info, eb); in walk_up_proc()
8406 struct btrfs_root *tree_root = root->fs_info->tree_root; in btrfs_drop_snapshot()
8415 btrfs_debug(root->fs_info, "Drop subvolume %llu", root->objectid); in btrfs_drop_snapshot()
8552 root->fs_info); in btrfs_drop_snapshot()
8605 btrfs_drop_and_free_fs_root(tree_root->fs_info, root); in btrfs_drop_snapshot()
8613 ret = btrfs_delayed_qgroup_accounting(trans, tree_root->fs_info); in btrfs_drop_snapshot()
8636 btrfs_std_error(root->fs_info, err); in btrfs_drop_snapshot()
8720 stripped = get_restripe_target(root->fs_info, flags); in update_block_group_flags()
8724 num_devices = root->fs_info->fs_devices->rw_devices; in update_block_group_flags()
8825 mutex_lock(&root->fs_info->ro_block_group_mutex); in btrfs_set_block_group_ro()
8829 mutex_unlock(&root->fs_info->ro_block_group_mutex); in btrfs_set_block_group_ro()
8869 lock_chunks(root->fs_info->chunk_root); in btrfs_set_block_group_ro()
8871 unlock_chunks(root->fs_info->chunk_root); in btrfs_set_block_group_ro()
8873 mutex_unlock(&root->fs_info->ro_block_group_mutex); in btrfs_set_block_group_ro()
8957 struct btrfs_fs_devices *fs_devices = root->fs_info->fs_devices; in btrfs_can_relocate()
8968 block_group = btrfs_lookup_block_group(root->fs_info, bytenr); in btrfs_can_relocate()
9018 target = get_restripe_target(root->fs_info, block_group->flags); in btrfs_can_relocate()
9053 mutex_lock(&root->fs_info->chunk_mutex); in btrfs_can_relocate()
9074 mutex_unlock(&root->fs_info->chunk_mutex); in btrfs_can_relocate()
9303 cache->fs_info = root->fs_info; in btrfs_create_block_group_cache()
9305 &root->fs_info->mapping_tree, in btrfs_create_block_group_cache()
9327 struct btrfs_fs_info *info = root->fs_info; in btrfs_read_block_groups()
9344 cache_gen = btrfs_super_cache_generation(root->fs_info->super_copy); in btrfs_read_block_groups()
9346 btrfs_super_generation(root->fs_info->super_copy) != cache_gen) in btrfs_read_block_groups()
9421 add_new_free_space(cache, root->fs_info, in btrfs_read_block_groups()
9428 ret = btrfs_add_block_group_cache(root->fs_info, cache); in btrfs_read_block_groups()
9456 set_avail_alloc_bits(root->fs_info, cache->flags); in btrfs_read_block_groups()
9471 list_for_each_entry_rcu(space_info, &root->fs_info->space_info, list) { in btrfs_read_block_groups()
9504 struct btrfs_root *extent_root = root->fs_info->extent_root; in btrfs_create_pending_block_groups()
9540 extent_root = root->fs_info->extent_root; in btrfs_make_block_group()
9542 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_make_block_group()
9566 add_new_free_space(cache, root->fs_info, chunk_offset, in btrfs_make_block_group()
9571 ret = btrfs_add_block_group_cache(root->fs_info, cache); in btrfs_make_block_group()
9578 ret = update_space_info(root->fs_info, cache->flags, size, bytes_used, in btrfs_make_block_group()
9582 spin_lock(&root->fs_info->block_group_cache_lock); in btrfs_make_block_group()
9584 &root->fs_info->block_group_cache_tree); in btrfs_make_block_group()
9586 spin_unlock(&root->fs_info->block_group_cache_lock); in btrfs_make_block_group()
9590 update_global_block_rsv(root->fs_info); in btrfs_make_block_group()
9600 set_avail_alloc_bits(extent_root->fs_info, type); in btrfs_make_block_group()
9605 static void clear_avail_alloc_bits(struct btrfs_fs_info *fs_info, u64 flags) in clear_avail_alloc_bits() argument
9610 write_seqlock(&fs_info->profiles_lock); in clear_avail_alloc_bits()
9612 fs_info->avail_data_alloc_bits &= ~extra_flags; in clear_avail_alloc_bits()
9614 fs_info->avail_metadata_alloc_bits &= ~extra_flags; in clear_avail_alloc_bits()
9616 fs_info->avail_system_alloc_bits &= ~extra_flags; in clear_avail_alloc_bits()
9617 write_sequnlock(&fs_info->profiles_lock); in clear_avail_alloc_bits()
9627 struct btrfs_root *tree_root = root->fs_info->tree_root; in btrfs_remove_block_group()
9637 root = root->fs_info->extent_root; in btrfs_remove_block_group()
9639 block_group = btrfs_lookup_block_group(root->fs_info, group_start); in btrfs_remove_block_group()
9659 cluster = &root->fs_info->data_alloc_cluster; in btrfs_remove_block_group()
9668 cluster = &root->fs_info->meta_alloc_cluster; in btrfs_remove_block_group()
9748 spin_lock(&root->fs_info->block_group_cache_lock); in btrfs_remove_block_group()
9750 &root->fs_info->block_group_cache_tree); in btrfs_remove_block_group()
9753 if (root->fs_info->first_logical_byte == block_group->key.objectid) in btrfs_remove_block_group()
9754 root->fs_info->first_logical_byte = (u64)-1; in btrfs_remove_block_group()
9755 spin_unlock(&root->fs_info->block_group_cache_lock); in btrfs_remove_block_group()
9766 clear_avail_alloc_bits(root->fs_info, block_group->flags); in btrfs_remove_block_group()
9779 down_write(&root->fs_info->commit_root_sem); in btrfs_remove_block_group()
9784 &root->fs_info->caching_block_groups, list) in btrfs_remove_block_group()
9793 up_write(&root->fs_info->commit_root_sem); in btrfs_remove_block_group()
9873 list_move_tail(&em->list, &root->fs_info->pinned_chunks); in btrfs_remove_block_group()
9880 em_tree = &root->fs_info->mapping_tree.map_tree; in btrfs_remove_block_group()
9914 void btrfs_delete_unused_bgs(struct btrfs_fs_info *fs_info) in btrfs_delete_unused_bgs() argument
9918 struct btrfs_root *root = fs_info->extent_root; in btrfs_delete_unused_bgs()
9922 if (!fs_info->open) in btrfs_delete_unused_bgs()
9925 spin_lock(&fs_info->unused_bgs_lock); in btrfs_delete_unused_bgs()
9926 while (!list_empty(&fs_info->unused_bgs)) { in btrfs_delete_unused_bgs()
9929 block_group = list_first_entry(&fs_info->unused_bgs, in btrfs_delete_unused_bgs()
9938 spin_unlock(&fs_info->unused_bgs_lock); in btrfs_delete_unused_bgs()
9995 mutex_lock(&fs_info->unused_bg_unpin_mutex); in btrfs_delete_unused_bgs()
9996 ret = clear_extent_bits(&fs_info->freed_extents[0], start, end, in btrfs_delete_unused_bgs()
9999 mutex_unlock(&fs_info->unused_bg_unpin_mutex); in btrfs_delete_unused_bgs()
10003 ret = clear_extent_bits(&fs_info->freed_extents[1], start, end, in btrfs_delete_unused_bgs()
10006 mutex_unlock(&fs_info->unused_bg_unpin_mutex); in btrfs_delete_unused_bgs()
10010 mutex_unlock(&fs_info->unused_bg_unpin_mutex); in btrfs_delete_unused_bgs()
10035 spin_lock(&fs_info->unused_bgs_lock); in btrfs_delete_unused_bgs()
10037 spin_unlock(&fs_info->unused_bgs_lock); in btrfs_delete_unused_bgs()
10040 int btrfs_init_space_info(struct btrfs_fs_info *fs_info) in btrfs_init_space_info() argument
10049 disk_super = fs_info->super_copy; in btrfs_init_space_info()
10058 ret = update_space_info(fs_info, flags, 0, 0, &space_info); in btrfs_init_space_info()
10064 ret = update_space_info(fs_info, flags, 0, 0, &space_info); in btrfs_init_space_info()
10067 ret = update_space_info(fs_info, flags, 0, 0, &space_info); in btrfs_init_space_info()
10072 ret = update_space_info(fs_info, flags, 0, 0, &space_info); in btrfs_init_space_info()
10085 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_trim_fs() local
10091 u64 total_bytes = btrfs_super_total_bytes(fs_info->super_copy); in btrfs_trim_fs()
10098 cache = btrfs_lookup_first_block_group(fs_info, range->start); in btrfs_trim_fs()
10100 cache = btrfs_lookup_block_group(fs_info, range->start); in btrfs_trim_fs()
10138 cache = next_block_group(fs_info->tree_root, cache); in btrfs_trim_fs()