Lines Matching refs:fs_info

232 	set_extent_bits(&root->fs_info->freed_extents[0],  in add_excluded_extent()
234 set_extent_bits(&root->fs_info->freed_extents[1], in add_excluded_extent()
247 clear_extent_bits(&root->fs_info->freed_extents[0], in free_excluded_extents()
249 clear_extent_bits(&root->fs_info->freed_extents[1], in free_excluded_extents()
272 ret = btrfs_rmap_block(&root->fs_info->mapping_tree, in exclude_super_stripes()
401 struct btrfs_fs_info *fs_info; in caching_thread() local
415 fs_info = block_group->fs_info; in caching_thread()
416 extent_root = fs_info->extent_root; in caching_thread()
449 down_read(&fs_info->commit_root_sem); in caching_thread()
460 if (btrfs_fs_closing(fs_info) > 1) { in caching_thread()
473 rwsem_is_contended(&fs_info->commit_root_sem)) { in caching_thread()
477 up_read(&fs_info->commit_root_sem); in caching_thread()
516 fs_info, last, in caching_thread()
520 fs_info->tree_root->nodesize; in caching_thread()
534 total_found += add_new_free_space(block_group, fs_info, last, in caching_thread()
560 up_read(&fs_info->commit_root_sem); in caching_thread()
582 struct btrfs_fs_info *fs_info = cache->fs_info; in cache_block_group() local
637 if (fs_info->mount_opt & BTRFS_MOUNT_SPACE_CACHE) { in cache_block_group()
639 ret = load_free_space_cache(fs_info, cache); in cache_block_group()
659 btrfs_should_fragment_free_space(fs_info->extent_root, in cache_block_group()
670 fragment_free_space(fs_info->extent_root, cache); in cache_block_group()
678 free_excluded_extents(fs_info->extent_root, cache); in cache_block_group()
703 down_write(&fs_info->commit_root_sem); in cache_block_group()
705 list_add_tail(&caching_ctl->list, &fs_info->caching_block_groups); in cache_block_group()
706 up_write(&fs_info->commit_root_sem); in cache_block_group()
710 btrfs_queue_work(fs_info->caching_workers, &caching_ctl->work); in cache_block_group()
790 ret = btrfs_search_slot(NULL, root->fs_info->extent_root, &key, path, in btrfs_lookup_data_extent()
824 if (metadata && !btrfs_fs_incompat(root->fs_info, SKINNY_METADATA)) { in btrfs_lookup_extent_info()
846 ret = btrfs_search_slot(trans, root->fs_info->extent_root, in btrfs_lookup_extent_info()
1552 bool skinny_metadata = btrfs_fs_incompat(root->fs_info, in lookup_inline_extent_backref()
2030 ret = btrfs_map_block(root->fs_info, REQ_DISCARD, in btrfs_discard_extent()
2078 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_inc_extent_ref() local
2084 ret = btrfs_add_delayed_tree_ref(fs_info, trans, bytenr, in btrfs_inc_extent_ref()
2089 ret = btrfs_add_delayed_data_ref(fs_info, trans, bytenr, in btrfs_inc_extent_ref()
2104 struct btrfs_fs_info *fs_info = root->fs_info; in __btrfs_inc_extent_ref() local
2121 ret = insert_inline_extent_backref(trans, fs_info->extent_root, path, in __btrfs_inc_extent_ref()
2147 ret = insert_extent_backref(trans, root->fs_info->extent_root, in __btrfs_inc_extent_ref()
2239 if (metadata && !btrfs_fs_incompat(root->fs_info, SKINNY_METADATA)) in run_delayed_extent_op()
2259 ret = btrfs_search_slot(trans, root->fs_info->extent_root, &key, in run_delayed_extent_op()
2295 ret = convert_extent_item_v0(trans, root->fs_info->extent_root, in run_delayed_extent_op()
2326 bool skinny_metadata = btrfs_fs_incompat(root->fs_info, in run_delayed_tree_ref()
2407 btrfs_qgroup_free_delayed_ref(root->fs_info, in run_one_delayed_ref()
2461 struct btrfs_fs_info *fs_info = root->fs_info; in __btrfs_run_delayed_refs() local
2511 btrfs_merge_delayed_refs(trans, fs_info, delayed_refs, in __btrfs_run_delayed_refs()
2521 btrfs_check_delayed_seq(fs_info, delayed_refs, ref->seq)) { in __btrfs_run_delayed_refs()
2574 btrfs_debug(fs_info, "run_delayed_extent_op returned %d", ret); in __btrfs_run_delayed_refs()
2634 btrfs_debug(fs_info, "run_one_delayed_ref returned %d", ret); in __btrfs_run_delayed_refs()
2673 avg = fs_info->avg_delayed_ref_runtime * 3 + runtime; in __btrfs_run_delayed_refs()
2674 fs_info->avg_delayed_ref_runtime = avg >> 2; /* div by 4 */ in __btrfs_run_delayed_refs()
2729 if (!btrfs_fs_incompat(root->fs_info, SKINNY_METADATA)) in heads_to_leaves()
2751 (u64)btrfs_super_csum_size(root->fs_info->super_copy)); in btrfs_csum_bytes_to_leaves()
2776 global_rsv = &root->fs_info->global_block_rsv; in btrfs_check_space_for_delayed_refs()
2797 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_should_throttle_delayed_refs() local
2804 avg_runtime = fs_info->avg_delayed_ref_runtime; in btrfs_should_throttle_delayed_refs()
2866 async->root = root->fs_info->tree_root; in btrfs_async_run_delayed_refs()
2878 btrfs_queue_work(root->fs_info->extent_workers, &async->work); in btrfs_async_run_delayed_refs()
2913 if (root == root->fs_info->extent_root) in btrfs_run_delayed_refs()
2914 root = root->fs_info->tree_root; in btrfs_run_delayed_refs()
2996 ret = btrfs_add_delayed_extent_op(root->fs_info, trans, bytenr, in btrfs_set_disk_extent_flags()
3070 struct btrfs_root *extent_root = root->fs_info->extent_root; in check_committed_ref()
3264 struct btrfs_root *extent_root = root->fs_info->extent_root; in write_one_cache_group()
3291 spin_lock(&root->fs_info->block_group_cache_lock); in next_block_group()
3297 spin_unlock(&root->fs_info->block_group_cache_lock); in next_block_group()
3299 cache = btrfs_lookup_first_block_group(root->fs_info, in next_block_group()
3311 spin_unlock(&root->fs_info->block_group_cache_lock); in next_block_group()
3319 struct btrfs_root *root = block_group->fs_info->tree_root; in cache_save_setup()
3393 &root->fs_info->global_block_rsv); in cache_save_setup()
3766 block_group = btrfs_lookup_block_group(root->fs_info, bytenr); in btrfs_extent_readonly()
3866 static void set_avail_alloc_bits(struct btrfs_fs_info *fs_info, u64 flags) in set_avail_alloc_bits() argument
3871 write_seqlock(&fs_info->profiles_lock); in set_avail_alloc_bits()
3873 fs_info->avail_data_alloc_bits |= extra_flags; in set_avail_alloc_bits()
3875 fs_info->avail_metadata_alloc_bits |= extra_flags; in set_avail_alloc_bits()
3877 fs_info->avail_system_alloc_bits |= extra_flags; in set_avail_alloc_bits()
3878 write_sequnlock(&fs_info->profiles_lock); in set_avail_alloc_bits()
3887 static u64 get_restripe_target(struct btrfs_fs_info *fs_info, u64 flags) in get_restripe_target() argument
3889 struct btrfs_balance_control *bctl = fs_info->balance_ctl; in get_restripe_target()
3918 u64 num_devices = root->fs_info->fs_devices->rw_devices; in btrfs_reduce_alloc_profile()
3927 spin_lock(&root->fs_info->balance_lock); in btrfs_reduce_alloc_profile()
3928 target = get_restripe_target(root->fs_info, flags); in btrfs_reduce_alloc_profile()
3932 spin_unlock(&root->fs_info->balance_lock); in btrfs_reduce_alloc_profile()
3936 spin_unlock(&root->fs_info->balance_lock); in btrfs_reduce_alloc_profile()
3968 seq = read_seqbegin(&root->fs_info->profiles_lock); in get_alloc_profile()
3971 flags |= root->fs_info->avail_data_alloc_bits; in get_alloc_profile()
3973 flags |= root->fs_info->avail_system_alloc_bits; in get_alloc_profile()
3975 flags |= root->fs_info->avail_metadata_alloc_bits; in get_alloc_profile()
3976 } while (read_seqretry(&root->fs_info->profiles_lock, seq)); in get_alloc_profile()
3988 else if (root == root->fs_info->chunk_root) in btrfs_get_alloc_profile()
4001 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_alloc_data_chunk_ondemand() local
4015 data_sinfo = fs_info->data_sinfo; in btrfs_alloc_data_chunk_ondemand()
4054 ret = do_chunk_alloc(trans, root->fs_info->extent_root, in btrfs_alloc_data_chunk_ondemand()
4068 data_sinfo = fs_info->data_sinfo; in btrfs_alloc_data_chunk_ondemand()
4086 !atomic_read(&root->fs_info->open_ioctl_trans)) { in btrfs_alloc_data_chunk_ondemand()
4090 btrfs_start_delalloc_roots(fs_info, 0, -1); in btrfs_alloc_data_chunk_ondemand()
4091 btrfs_wait_ordered_roots(fs_info, -1); in btrfs_alloc_data_chunk_ondemand()
4109 mutex_lock(&root->fs_info->cleaner_delayed_iput_mutex); in btrfs_alloc_data_chunk_ondemand()
4110 mutex_unlock(&root->fs_info->cleaner_delayed_iput_mutex); in btrfs_alloc_data_chunk_ondemand()
4117 trace_btrfs_space_reservation(root->fs_info, in btrfs_alloc_data_chunk_ondemand()
4123 trace_btrfs_space_reservation(root->fs_info, "space_info", in btrfs_alloc_data_chunk_ondemand()
4178 data_sinfo = root->fs_info->data_sinfo; in btrfs_free_reserved_data_space_noquota()
4184 trace_btrfs_space_reservation(root->fs_info, "space_info", in btrfs_free_reserved_data_space_noquota()
4223 struct btrfs_block_rsv *global_rsv = &root->fs_info->global_block_rsv; in should_alloc_chunk()
4244 thresh = btrfs_super_total_bytes(root->fs_info->super_copy); in should_alloc_chunk()
4265 num_dev = root->fs_info->fs_devices->rw_devices; in get_profile_num_devs()
4293 ASSERT(mutex_is_locked(&root->fs_info->chunk_mutex)); in check_system_chunk()
4295 info = __find_space_info(root->fs_info, BTRFS_BLOCK_GROUP_SYSTEM); in check_system_chunk()
4309 btrfs_info(root->fs_info, "left=%llu, need=%llu, flags=%llu", in check_system_chunk()
4317 flags = btrfs_get_alloc_profile(root->fs_info->chunk_root, 0); in check_system_chunk()
4328 ret = btrfs_block_rsv_add(root->fs_info->chunk_root, in check_system_chunk()
4329 &root->fs_info->chunk_block_rsv, in check_system_chunk()
4340 struct btrfs_fs_info *fs_info = extent_root->fs_info; in do_chunk_alloc() local
4348 space_info = __find_space_info(extent_root->fs_info, flags); in do_chunk_alloc()
4350 ret = update_space_info(extent_root->fs_info, flags, in do_chunk_alloc()
4380 mutex_lock(&fs_info->chunk_mutex); in do_chunk_alloc()
4389 mutex_unlock(&fs_info->chunk_mutex); in do_chunk_alloc()
4408 if (flags & BTRFS_BLOCK_GROUP_DATA && fs_info->metadata_ratio) { in do_chunk_alloc()
4409 fs_info->data_chunk_allocations++; in do_chunk_alloc()
4410 if (!(fs_info->data_chunk_allocations % in do_chunk_alloc()
4411 fs_info->metadata_ratio)) in do_chunk_alloc()
4412 force_metadata_allocation(fs_info); in do_chunk_alloc()
4436 mutex_unlock(&fs_info->chunk_mutex); in do_chunk_alloc()
4463 struct btrfs_block_rsv *global_rsv = &root->fs_info->global_block_rsv; in can_overcommit()
4486 spin_lock(&root->fs_info->free_chunk_lock); in can_overcommit()
4487 avail = root->fs_info->free_chunk_space; in can_overcommit()
4488 spin_unlock(&root->fs_info->free_chunk_lock); in can_overcommit()
4519 struct super_block *sb = root->fs_info->sb; in btrfs_writeback_inodes_sb_nr()
4532 btrfs_start_delalloc_roots(root->fs_info, 0, nr_items); in btrfs_writeback_inodes_sb_nr()
4534 btrfs_wait_ordered_roots(root->fs_info, nr_items); in btrfs_writeback_inodes_sb_nr()
4574 block_rsv = &root->fs_info->delalloc_block_rsv; in shrink_delalloc()
4578 &root->fs_info->delalloc_bytes); in shrink_delalloc()
4583 btrfs_wait_ordered_roots(root->fs_info, items); in shrink_delalloc()
4596 max_reclaim = atomic_read(&root->fs_info->async_delalloc_pages); in shrink_delalloc()
4605 wait_event(root->fs_info->async_submit_wait, in shrink_delalloc()
4606 atomic_read(&root->fs_info->async_delalloc_pages) <= in shrink_delalloc()
4622 btrfs_wait_ordered_roots(root->fs_info, items); in shrink_delalloc()
4629 &root->fs_info->delalloc_bytes); in shrink_delalloc()
4647 struct btrfs_block_rsv *delayed_rsv = &root->fs_info->delayed_block_rsv; in may_commit_transaction()
4729 ret = do_chunk_alloc(trans, root->fs_info->extent_root, in flush_space()
4786 struct btrfs_fs_info *fs_info, u64 used) in need_do_async_reclaim() argument
4794 return (used >= thresh && !btrfs_fs_closing(fs_info) && in need_do_async_reclaim()
4795 !test_bit(BTRFS_FS_STATE_REMOUNTING, &fs_info->fs_state)); in need_do_async_reclaim()
4799 struct btrfs_fs_info *fs_info, in btrfs_need_do_async_reclaim() argument
4817 if (need_do_async_reclaim(space_info, fs_info, used)) { in btrfs_need_do_async_reclaim()
4828 struct btrfs_fs_info *fs_info; in btrfs_async_reclaim_metadata_space() local
4833 fs_info = container_of(work, struct btrfs_fs_info, async_reclaim_work); in btrfs_async_reclaim_metadata_space()
4834 space_info = __find_space_info(fs_info, BTRFS_BLOCK_GROUP_METADATA); in btrfs_async_reclaim_metadata_space()
4836 to_reclaim = btrfs_calc_reclaim_metadata_size(fs_info->fs_root, in btrfs_async_reclaim_metadata_space()
4843 flush_space(fs_info->fs_root, space_info, to_reclaim, in btrfs_async_reclaim_metadata_space()
4846 if (!btrfs_need_do_async_reclaim(space_info, fs_info, in btrfs_async_reclaim_metadata_space()
4924 trace_btrfs_space_reservation(root->fs_info, in reserve_metadata_bytes()
4947 trace_btrfs_space_reservation(root->fs_info, "space_info", in reserve_metadata_bytes()
4971 if (!root->fs_info->log_root_recovering && in reserve_metadata_bytes()
4972 need_do_async_reclaim(space_info, root->fs_info, used) && in reserve_metadata_bytes()
4973 !work_busy(&root->fs_info->async_reclaim_work)) in reserve_metadata_bytes()
4975 &root->fs_info->async_reclaim_work); in reserve_metadata_bytes()
5008 &root->fs_info->global_block_rsv; in reserve_metadata_bytes()
5015 trace_btrfs_space_reservation(root->fs_info, in reserve_metadata_bytes()
5034 (root == root->fs_info->csum_root && trans->adding_csums) || in get_block_rsv()
5035 (root == root->fs_info->uuid_root)) in get_block_rsv()
5042 block_rsv = &root->fs_info->empty_block_rsv; in get_block_rsv()
5074 int btrfs_cond_migrate_bytes(struct btrfs_fs_info *fs_info, in btrfs_cond_migrate_bytes() argument
5078 struct btrfs_block_rsv *global_rsv = &fs_info->global_block_rsv; in btrfs_cond_migrate_bytes()
5099 static void block_rsv_release_bytes(struct btrfs_fs_info *fs_info, in block_rsv_release_bytes() argument
5136 trace_btrfs_space_reservation(fs_info, "space_info", in block_rsv_release_bytes()
5167 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_alloc_block_rsv() local
5174 block_rsv->space_info = __find_space_info(fs_info, in btrfs_alloc_block_rsv()
5270 struct btrfs_block_rsv *global_rsv = &root->fs_info->global_block_rsv; in btrfs_block_rsv_release()
5274 block_rsv_release_bytes(root->fs_info, block_rsv, global_rsv, in btrfs_block_rsv_release()
5283 static u64 calc_global_metadata_size(struct btrfs_fs_info *fs_info) in calc_global_metadata_size() argument
5289 int csum_size = btrfs_super_csum_size(fs_info->super_copy); in calc_global_metadata_size()
5291 sinfo = __find_space_info(fs_info, BTRFS_BLOCK_GROUP_DATA); in calc_global_metadata_size()
5296 sinfo = __find_space_info(fs_info, BTRFS_BLOCK_GROUP_METADATA); in calc_global_metadata_size()
5303 num_bytes = (data_used >> fs_info->sb->s_blocksize_bits) * in calc_global_metadata_size()
5310 return ALIGN(num_bytes, fs_info->extent_root->nodesize << 10); in calc_global_metadata_size()
5313 static void update_global_block_rsv(struct btrfs_fs_info *fs_info) in update_global_block_rsv() argument
5315 struct btrfs_block_rsv *block_rsv = &fs_info->global_block_rsv; in update_global_block_rsv()
5319 num_bytes = calc_global_metadata_size(fs_info); in update_global_block_rsv()
5334 trace_btrfs_space_reservation(fs_info, "space_info", in update_global_block_rsv()
5341 trace_btrfs_space_reservation(fs_info, "space_info", in update_global_block_rsv()
5351 static void init_global_block_rsv(struct btrfs_fs_info *fs_info) in init_global_block_rsv() argument
5355 space_info = __find_space_info(fs_info, BTRFS_BLOCK_GROUP_SYSTEM); in init_global_block_rsv()
5356 fs_info->chunk_block_rsv.space_info = space_info; in init_global_block_rsv()
5358 space_info = __find_space_info(fs_info, BTRFS_BLOCK_GROUP_METADATA); in init_global_block_rsv()
5359 fs_info->global_block_rsv.space_info = space_info; in init_global_block_rsv()
5360 fs_info->delalloc_block_rsv.space_info = space_info; in init_global_block_rsv()
5361 fs_info->trans_block_rsv.space_info = space_info; in init_global_block_rsv()
5362 fs_info->empty_block_rsv.space_info = space_info; in init_global_block_rsv()
5363 fs_info->delayed_block_rsv.space_info = space_info; in init_global_block_rsv()
5365 fs_info->extent_root->block_rsv = &fs_info->global_block_rsv; in init_global_block_rsv()
5366 fs_info->csum_root->block_rsv = &fs_info->global_block_rsv; in init_global_block_rsv()
5367 fs_info->dev_root->block_rsv = &fs_info->global_block_rsv; in init_global_block_rsv()
5368 fs_info->tree_root->block_rsv = &fs_info->global_block_rsv; in init_global_block_rsv()
5369 if (fs_info->quota_root) in init_global_block_rsv()
5370 fs_info->quota_root->block_rsv = &fs_info->global_block_rsv; in init_global_block_rsv()
5371 fs_info->chunk_root->block_rsv = &fs_info->chunk_block_rsv; in init_global_block_rsv()
5373 update_global_block_rsv(fs_info); in init_global_block_rsv()
5376 static void release_global_block_rsv(struct btrfs_fs_info *fs_info) in release_global_block_rsv() argument
5378 block_rsv_release_bytes(fs_info, &fs_info->global_block_rsv, NULL, in release_global_block_rsv()
5380 WARN_ON(fs_info->delalloc_block_rsv.size > 0); in release_global_block_rsv()
5381 WARN_ON(fs_info->delalloc_block_rsv.reserved > 0); in release_global_block_rsv()
5382 WARN_ON(fs_info->trans_block_rsv.size > 0); in release_global_block_rsv()
5383 WARN_ON(fs_info->trans_block_rsv.reserved > 0); in release_global_block_rsv()
5384 WARN_ON(fs_info->chunk_block_rsv.size > 0); in release_global_block_rsv()
5385 WARN_ON(fs_info->chunk_block_rsv.reserved > 0); in release_global_block_rsv()
5386 WARN_ON(fs_info->delayed_block_rsv.size > 0); in release_global_block_rsv()
5387 WARN_ON(fs_info->delayed_block_rsv.reserved > 0); in release_global_block_rsv()
5399 trace_btrfs_space_reservation(root->fs_info, "transaction", in btrfs_trans_release_metadata()
5411 struct btrfs_fs_info *fs_info = trans->root->fs_info; in btrfs_trans_release_chunk_metadata() local
5418 block_rsv_release_bytes(fs_info, &fs_info->chunk_block_rsv, NULL, in btrfs_trans_release_chunk_metadata()
5437 trace_btrfs_space_reservation(root->fs_info, "orphan", in btrfs_orphan_reserve_metadata()
5446 trace_btrfs_space_reservation(root->fs_info, "orphan", in btrfs_orphan_release_metadata()
5473 struct btrfs_block_rsv *global_rsv = &root->fs_info->global_block_rsv; in btrfs_subvolume_reserve_metadata()
5475 if (root->fs_info->quota_enabled) { in btrfs_subvolume_reserve_metadata()
5488 rsv->space_info = __find_space_info(root->fs_info, in btrfs_subvolume_reserve_metadata()
5600 struct btrfs_block_rsv *block_rsv = &root->fs_info->delalloc_block_rsv; in btrfs_delalloc_reserve_metadata()
5622 btrfs_transaction_in_commit(root->fs_info)) in btrfs_delalloc_reserve_metadata()
5657 if (root->fs_info->quota_enabled) { in btrfs_delalloc_reserve_metadata()
5683 trace_btrfs_space_reservation(root->fs_info, "delalloc", in btrfs_delalloc_reserve_metadata()
5745 trace_btrfs_space_reservation(root->fs_info, "delalloc", in btrfs_delalloc_reserve_metadata()
5781 trace_btrfs_space_reservation(root->fs_info, "delalloc", in btrfs_delalloc_release_metadata()
5784 btrfs_block_rsv_release(root, &root->fs_info->delalloc_block_rsv, in btrfs_delalloc_release_metadata()
5852 struct btrfs_fs_info *info = root->fs_info; in update_block_group()
5960 spin_lock(&root->fs_info->block_group_cache_lock); in first_logical_byte()
5961 bytenr = root->fs_info->first_logical_byte; in first_logical_byte()
5962 spin_unlock(&root->fs_info->block_group_cache_lock); in first_logical_byte()
5967 cache = btrfs_lookup_first_block_group(root->fs_info, search_start); in first_logical_byte()
5992 set_extent_dirty(root->fs_info->pinned_extents, bytenr, in pin_down_extent()
6007 cache = btrfs_lookup_block_group(root->fs_info, bytenr); in btrfs_pin_extent()
6025 cache = btrfs_lookup_block_group(root->fs_info, bytenr); in btrfs_pin_extent_for_log_replay()
6051 block_group = btrfs_lookup_block_group(root->fs_info, start); in __exclude_logged_extent()
6098 if (!btrfs_fs_incompat(log->fs_info, MIXED_GROUPS)) in btrfs_exclude_logged_extents()
6157 trace_btrfs_space_reservation(cache->fs_info, in btrfs_update_reserved_bytes()
6183 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_prepare_extent_commit() local
6188 down_write(&fs_info->commit_root_sem); in btrfs_prepare_extent_commit()
6191 &fs_info->caching_block_groups, list) { in btrfs_prepare_extent_commit()
6202 if (fs_info->pinned_extents == &fs_info->freed_extents[0]) in btrfs_prepare_extent_commit()
6203 fs_info->pinned_extents = &fs_info->freed_extents[1]; in btrfs_prepare_extent_commit()
6205 fs_info->pinned_extents = &fs_info->freed_extents[0]; in btrfs_prepare_extent_commit()
6207 up_write(&fs_info->commit_root_sem); in btrfs_prepare_extent_commit()
6209 update_global_block_rsv(fs_info); in btrfs_prepare_extent_commit()
6230 ret = &root->fs_info->meta_alloc_cluster; in fetch_cluster_info()
6234 ret = &root->fs_info->data_alloc_cluster; in fetch_cluster_info()
6243 struct btrfs_fs_info *fs_info = root->fs_info; in unpin_extent_range() local
6246 struct btrfs_block_rsv *global_rsv = &fs_info->global_block_rsv; in unpin_extent_range()
6260 cache = btrfs_lookup_block_group(fs_info, start); in unpin_extent_range()
6329 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_finish_extent_commit() local
6337 if (fs_info->pinned_extents == &fs_info->freed_extents[0]) in btrfs_finish_extent_commit()
6338 unpin = &fs_info->freed_extents[1]; in btrfs_finish_extent_commit()
6340 unpin = &fs_info->freed_extents[0]; in btrfs_finish_extent_commit()
6343 mutex_lock(&fs_info->unused_bg_unpin_mutex); in btrfs_finish_extent_commit()
6347 mutex_unlock(&fs_info->unused_bg_unpin_mutex); in btrfs_finish_extent_commit()
6357 mutex_unlock(&fs_info->unused_bg_unpin_mutex); in btrfs_finish_extent_commit()
6383 btrfs_warn(fs_info, in btrfs_finish_extent_commit()
6392 static void add_pinned_bytes(struct btrfs_fs_info *fs_info, u64 num_bytes, in add_pinned_bytes() argument
6407 space_info = __find_space_info(fs_info, flags); in add_pinned_bytes()
6422 struct btrfs_fs_info *info = root->fs_info; in __btrfs_free_extent()
6437 bool skinny_metadata = btrfs_fs_incompat(root->fs_info, in __btrfs_free_extent()
6635 add_pinned_bytes(root->fs_info, -num_bytes, owner_objectid, in __btrfs_free_extent()
6761 ret = btrfs_add_delayed_tree_ref(root->fs_info, trans, in btrfs_free_tree_block()
6781 cache = btrfs_lookup_block_group(root->fs_info, buf->start); in btrfs_free_tree_block()
6799 add_pinned_bytes(root->fs_info, buf->len, in btrfs_free_tree_block()
6816 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_free_extent() local
6821 add_pinned_bytes(root->fs_info, num_bytes, owner, root_objectid); in btrfs_free_extent()
6833 ret = btrfs_add_delayed_tree_ref(fs_info, trans, bytenr, in btrfs_free_extent()
6838 ret = btrfs_add_delayed_data_ref(fs_info, trans, bytenr, in btrfs_free_extent()
7023 struct btrfs_root *root = orig_root->fs_info->extent_root; in find_free_extent()
7048 space_info = __find_space_info(root->fs_info, flags); in find_free_extent()
7050 btrfs_err(root->fs_info, "No space info for %llu", flags); in find_free_extent()
7097 block_group = btrfs_lookup_block_group(root->fs_info, in find_free_extent()
7564 sinfo = __find_space_info(root->fs_info, flags); in btrfs_reserve_extent()
7565 btrfs_err(root->fs_info, "allocation failed flags %llu, wanted %llu", in btrfs_reserve_extent()
7582 cache = btrfs_lookup_block_group(root->fs_info, start); in __btrfs_free_reserved_extent()
7584 btrfs_err(root->fs_info, "Unable to find block group for %llu", in __btrfs_free_reserved_extent()
7624 struct btrfs_fs_info *fs_info = root->fs_info; in alloc_reserved_file_extent() local
7644 ret = btrfs_insert_empty_item(trans, fs_info->extent_root, path, in alloc_reserved_file_extent()
7680 btrfs_err(fs_info, "update block group failed for %llu %llu", in alloc_reserved_file_extent()
7695 struct btrfs_fs_info *fs_info = root->fs_info; in alloc_reserved_tree_block() local
7703 bool skinny_metadata = btrfs_fs_incompat(root->fs_info, in alloc_reserved_tree_block()
7717 ret = btrfs_insert_empty_item(trans, fs_info->extent_root, path, in alloc_reserved_tree_block()
7761 btrfs_err(fs_info, "update block group failed for %llu %llu", in alloc_reserved_tree_block()
7780 ret = btrfs_add_delayed_data_ref(root->fs_info, trans, ins->objectid, in btrfs_alloc_reserved_file_extent()
7805 if (!btrfs_fs_incompat(root->fs_info, MIXED_GROUPS)) { in btrfs_alloc_logged_file_extent()
7811 block_group = btrfs_lookup_block_group(root->fs_info, ins->objectid); in btrfs_alloc_logged_file_extent()
7836 clean_tree_block(trans, root->fs_info, buf); in btrfs_init_new_buffer()
7869 struct btrfs_block_rsv *global_rsv = &root->fs_info->global_block_rsv; in use_block_rsv()
7887 update_global_block_rsv(root->fs_info); in use_block_rsv()
7918 static void unuse_block_rsv(struct btrfs_fs_info *fs_info, in unuse_block_rsv() argument
7922 block_rsv_release_bytes(fs_info, block_rsv, NULL, 0); in unuse_block_rsv()
7942 bool skinny_metadata = btrfs_fs_incompat(root->fs_info, in btrfs_alloc_tree_block()
7994 ret = btrfs_add_delayed_tree_ref(root->fs_info, trans, in btrfs_alloc_tree_block()
8011 unuse_block_rsv(root->fs_info, block_rsv, blocksize); in btrfs_alloc_tree_block()
8152 if (!root->fs_info->quota_enabled) in account_leaf_items()
8260 if (!root->fs_info->quota_enabled) in account_shared_subtree()
8474 next = btrfs_find_tree_block(root->fs_info, bytenr); in do_walk_down()
8495 btrfs_err(root->fs_info, "Missing references."); in do_walk_down()
8572 btrfs_err_rl(root->fs_info, in do_walk_down()
8665 btrfs_err_rl(root->fs_info, in walk_up_proc()
8679 clean_tree_block(trans, root->fs_info, eb); in walk_up_proc()
8787 struct btrfs_root *tree_root = root->fs_info->tree_root; in btrfs_drop_snapshot()
8796 btrfs_debug(root->fs_info, "Drop subvolume %llu", root->objectid); in btrfs_drop_snapshot()
8991 btrfs_std_error(root->fs_info, err, NULL); in btrfs_drop_snapshot()
9075 stripped = get_restripe_target(root->fs_info, flags); in update_block_group_flags()
9079 num_devices = root->fs_info->fs_devices->rw_devices; in update_block_group_flags()
9178 mutex_lock(&root->fs_info->ro_block_group_mutex); in btrfs_inc_block_group_ro()
9182 mutex_unlock(&root->fs_info->ro_block_group_mutex); in btrfs_inc_block_group_ro()
9222 lock_chunks(root->fs_info->chunk_root); in btrfs_inc_block_group_ro()
9224 unlock_chunks(root->fs_info->chunk_root); in btrfs_inc_block_group_ro()
9226 mutex_unlock(&root->fs_info->ro_block_group_mutex); in btrfs_inc_block_group_ro()
9312 struct btrfs_fs_devices *fs_devices = root->fs_info->fs_devices; in btrfs_can_relocate()
9323 block_group = btrfs_lookup_block_group(root->fs_info, bytenr); in btrfs_can_relocate()
9373 target = get_restripe_target(root->fs_info, block_group->flags); in btrfs_can_relocate()
9408 mutex_lock(&root->fs_info->chunk_mutex); in btrfs_can_relocate()
9429 mutex_unlock(&root->fs_info->chunk_mutex); in btrfs_can_relocate()
9658 cache->fs_info = root->fs_info; in btrfs_create_block_group_cache()
9660 &root->fs_info->mapping_tree, in btrfs_create_block_group_cache()
9682 struct btrfs_fs_info *info = root->fs_info; in btrfs_read_block_groups()
9699 cache_gen = btrfs_super_cache_generation(root->fs_info->super_copy); in btrfs_read_block_groups()
9701 btrfs_super_generation(root->fs_info->super_copy) != cache_gen) in btrfs_read_block_groups()
9776 add_new_free_space(cache, root->fs_info, in btrfs_read_block_groups()
9783 ret = btrfs_add_block_group_cache(root->fs_info, cache); in btrfs_read_block_groups()
9811 set_avail_alloc_bits(root->fs_info, cache->flags); in btrfs_read_block_groups()
9826 list_for_each_entry_rcu(space_info, &root->fs_info->space_info, list) { in btrfs_read_block_groups()
9859 struct btrfs_root *extent_root = root->fs_info->extent_root; in btrfs_create_pending_block_groups()
9898 extent_root = root->fs_info->extent_root; in btrfs_make_block_group()
9900 btrfs_set_log_full_commit(root->fs_info, trans); in btrfs_make_block_group()
9924 add_new_free_space(cache, root->fs_info, chunk_offset, in btrfs_make_block_group()
9942 ret = update_space_info(root->fs_info, cache->flags, 0, 0, in btrfs_make_block_group()
9950 ret = btrfs_add_block_group_cache(root->fs_info, cache); in btrfs_make_block_group()
9961 ret = update_space_info(root->fs_info, cache->flags, size, bytes_used, in btrfs_make_block_group()
9965 spin_lock(&root->fs_info->block_group_cache_lock); in btrfs_make_block_group()
9967 &root->fs_info->block_group_cache_tree); in btrfs_make_block_group()
9969 spin_unlock(&root->fs_info->block_group_cache_lock); in btrfs_make_block_group()
9973 update_global_block_rsv(root->fs_info); in btrfs_make_block_group()
9983 set_avail_alloc_bits(extent_root->fs_info, type); in btrfs_make_block_group()
9988 static void clear_avail_alloc_bits(struct btrfs_fs_info *fs_info, u64 flags) in clear_avail_alloc_bits() argument
9993 write_seqlock(&fs_info->profiles_lock); in clear_avail_alloc_bits()
9995 fs_info->avail_data_alloc_bits &= ~extra_flags; in clear_avail_alloc_bits()
9997 fs_info->avail_metadata_alloc_bits &= ~extra_flags; in clear_avail_alloc_bits()
9999 fs_info->avail_system_alloc_bits &= ~extra_flags; in clear_avail_alloc_bits()
10000 write_sequnlock(&fs_info->profiles_lock); in clear_avail_alloc_bits()
10010 struct btrfs_root *tree_root = root->fs_info->tree_root; in btrfs_remove_block_group()
10020 root = root->fs_info->extent_root; in btrfs_remove_block_group()
10022 block_group = btrfs_lookup_block_group(root->fs_info, group_start); in btrfs_remove_block_group()
10042 cluster = &root->fs_info->data_alloc_cluster; in btrfs_remove_block_group()
10051 cluster = &root->fs_info->meta_alloc_cluster; in btrfs_remove_block_group()
10131 spin_lock(&root->fs_info->block_group_cache_lock); in btrfs_remove_block_group()
10133 &root->fs_info->block_group_cache_tree); in btrfs_remove_block_group()
10136 if (root->fs_info->first_logical_byte == block_group->key.objectid) in btrfs_remove_block_group()
10137 root->fs_info->first_logical_byte = (u64)-1; in btrfs_remove_block_group()
10138 spin_unlock(&root->fs_info->block_group_cache_lock); in btrfs_remove_block_group()
10149 clear_avail_alloc_bits(root->fs_info, block_group->flags); in btrfs_remove_block_group()
10162 down_write(&root->fs_info->commit_root_sem); in btrfs_remove_block_group()
10167 &root->fs_info->caching_block_groups, list) in btrfs_remove_block_group()
10176 up_write(&root->fs_info->commit_root_sem); in btrfs_remove_block_group()
10261 list_move_tail(&em->list, &root->fs_info->pinned_chunks); in btrfs_remove_block_group()
10268 em_tree = &root->fs_info->mapping_tree.map_tree; in btrfs_remove_block_group()
10299 btrfs_start_trans_remove_block_group(struct btrfs_fs_info *fs_info, in btrfs_start_trans_remove_block_group() argument
10302 struct extent_map_tree *em_tree = &fs_info->mapping_tree.map_tree; in btrfs_start_trans_remove_block_group()
10335 return btrfs_start_transaction_fallback_global_rsv(fs_info->extent_root, in btrfs_start_trans_remove_block_group()
10343 void btrfs_delete_unused_bgs(struct btrfs_fs_info *fs_info) in btrfs_delete_unused_bgs() argument
10347 struct btrfs_root *root = fs_info->extent_root; in btrfs_delete_unused_bgs()
10351 if (!fs_info->open) in btrfs_delete_unused_bgs()
10354 spin_lock(&fs_info->unused_bgs_lock); in btrfs_delete_unused_bgs()
10355 while (!list_empty(&fs_info->unused_bgs)) { in btrfs_delete_unused_bgs()
10359 block_group = list_first_entry(&fs_info->unused_bgs, in btrfs_delete_unused_bgs()
10370 spin_unlock(&fs_info->unused_bgs_lock); in btrfs_delete_unused_bgs()
10372 mutex_lock(&fs_info->delete_unused_bgs_mutex); in btrfs_delete_unused_bgs()
10405 trans = btrfs_start_trans_remove_block_group(fs_info, in btrfs_delete_unused_bgs()
10430 mutex_lock(&fs_info->unused_bg_unpin_mutex); in btrfs_delete_unused_bgs()
10431 ret = clear_extent_bits(&fs_info->freed_extents[0], start, end, in btrfs_delete_unused_bgs()
10434 mutex_unlock(&fs_info->unused_bg_unpin_mutex); in btrfs_delete_unused_bgs()
10438 ret = clear_extent_bits(&fs_info->freed_extents[1], start, end, in btrfs_delete_unused_bgs()
10441 mutex_unlock(&fs_info->unused_bg_unpin_mutex); in btrfs_delete_unused_bgs()
10445 mutex_unlock(&fs_info->unused_bg_unpin_mutex); in btrfs_delete_unused_bgs()
10486 spin_lock(&fs_info->unused_bgs_lock); in btrfs_delete_unused_bgs()
10494 spin_unlock(&fs_info->unused_bgs_lock); in btrfs_delete_unused_bgs()
10500 mutex_unlock(&fs_info->delete_unused_bgs_mutex); in btrfs_delete_unused_bgs()
10502 spin_lock(&fs_info->unused_bgs_lock); in btrfs_delete_unused_bgs()
10504 spin_unlock(&fs_info->unused_bgs_lock); in btrfs_delete_unused_bgs()
10507 int btrfs_init_space_info(struct btrfs_fs_info *fs_info) in btrfs_init_space_info() argument
10516 disk_super = fs_info->super_copy; in btrfs_init_space_info()
10525 ret = update_space_info(fs_info, flags, 0, 0, &space_info); in btrfs_init_space_info()
10531 ret = update_space_info(fs_info, flags, 0, 0, &space_info); in btrfs_init_space_info()
10534 ret = update_space_info(fs_info, flags, 0, 0, &space_info); in btrfs_init_space_info()
10539 ret = update_space_info(fs_info, flags, 0, 0, &space_info); in btrfs_init_space_info()
10587 struct btrfs_fs_info *fs_info = device->dev_root->fs_info; in btrfs_trim_free_extents() local
10591 ret = mutex_lock_interruptible(&fs_info->chunk_mutex); in btrfs_trim_free_extents()
10595 down_read(&fs_info->commit_root_sem); in btrfs_trim_free_extents()
10597 spin_lock(&fs_info->trans_lock); in btrfs_trim_free_extents()
10598 trans = fs_info->running_transaction; in btrfs_trim_free_extents()
10601 spin_unlock(&fs_info->trans_lock); in btrfs_trim_free_extents()
10609 up_read(&fs_info->commit_root_sem); in btrfs_trim_free_extents()
10610 mutex_unlock(&fs_info->chunk_mutex); in btrfs_trim_free_extents()
10617 up_read(&fs_info->commit_root_sem); in btrfs_trim_free_extents()
10618 mutex_unlock(&fs_info->chunk_mutex); in btrfs_trim_free_extents()
10639 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_trim_fs() local
10647 u64 total_bytes = btrfs_super_total_bytes(fs_info->super_copy); in btrfs_trim_fs()
10654 cache = btrfs_lookup_first_block_group(fs_info, range->start); in btrfs_trim_fs()
10656 cache = btrfs_lookup_block_group(fs_info, range->start); in btrfs_trim_fs()
10694 cache = next_block_group(fs_info->tree_root, cache); in btrfs_trim_fs()
10697 mutex_lock(&root->fs_info->fs_devices->device_list_mutex); in btrfs_trim_fs()
10698 devices = &root->fs_info->fs_devices->alloc_list; in btrfs_trim_fs()
10707 mutex_unlock(&root->fs_info->fs_devices->device_list_mutex); in btrfs_trim_fs()