Lines Matching refs:fs_info
28 struct btrfs_fs_info *fs_info = block_group->fs_info; in btrfs_should_fragment_free_space() local
30 return (btrfs_test_opt(fs_info, FRAGMENT_METADATA) && in btrfs_should_fragment_free_space()
32 (btrfs_test_opt(fs_info, FRAGMENT_DATA) && in btrfs_should_fragment_free_space()
43 static u64 get_restripe_target(struct btrfs_fs_info *fs_info, u64 flags) in get_restripe_target() argument
45 struct btrfs_balance_control *bctl = fs_info->balance_ctl; in get_restripe_target()
72 static u64 btrfs_reduce_alloc_profile(struct btrfs_fs_info *fs_info, u64 flags) in btrfs_reduce_alloc_profile() argument
74 u64 num_devices = fs_info->fs_devices->rw_devices; in btrfs_reduce_alloc_profile()
83 spin_lock(&fs_info->balance_lock); in btrfs_reduce_alloc_profile()
84 target = get_restripe_target(fs_info, flags); in btrfs_reduce_alloc_profile()
86 spin_unlock(&fs_info->balance_lock); in btrfs_reduce_alloc_profile()
89 spin_unlock(&fs_info->balance_lock); in btrfs_reduce_alloc_profile()
114 u64 btrfs_get_alloc_profile(struct btrfs_fs_info *fs_info, u64 orig_flags) in btrfs_get_alloc_profile() argument
121 seq = read_seqbegin(&fs_info->profiles_lock); in btrfs_get_alloc_profile()
124 flags |= fs_info->avail_data_alloc_bits; in btrfs_get_alloc_profile()
126 flags |= fs_info->avail_system_alloc_bits; in btrfs_get_alloc_profile()
128 flags |= fs_info->avail_metadata_alloc_bits; in btrfs_get_alloc_profile()
129 } while (read_seqretry(&fs_info->profiles_lock, seq)); in btrfs_get_alloc_profile()
131 return btrfs_reduce_alloc_profile(fs_info, flags); in btrfs_get_alloc_profile()
151 !BTRFS_FS_LOG_CLEANUP_ERROR(cache->fs_info)) in btrfs_put_block_group()
160 btrfs_discard_cancel_work(&cache->fs_info->discard_ctl, in btrfs_put_block_group()
279 struct btrfs_fs_info *fs_info = cache->fs_info; in btrfs_next_block_group() local
282 read_lock(&fs_info->block_group_cache_lock); in btrfs_next_block_group()
288 read_unlock(&fs_info->block_group_cache_lock); in btrfs_next_block_group()
290 return btrfs_lookup_first_block_group(fs_info, next_bytenr); in btrfs_next_block_group()
299 read_unlock(&fs_info->block_group_cache_lock); in btrfs_next_block_group()
318 struct btrfs_block_group *btrfs_inc_nocow_writers(struct btrfs_fs_info *fs_info, in btrfs_inc_nocow_writers() argument
324 bg = btrfs_lookup_block_group(fs_info, bytenr); in btrfs_inc_nocow_writers()
369 void btrfs_dec_block_group_reservations(struct btrfs_fs_info *fs_info, in btrfs_dec_block_group_reservations() argument
374 bg = btrfs_lookup_block_group(fs_info, start); in btrfs_dec_block_group_reservations()
480 struct btrfs_fs_info *fs_info = block_group->fs_info; in fragment_free_space() local
484 fs_info->nodesize : fs_info->sectorsize; in fragment_free_space()
506 struct btrfs_fs_info *info = block_group->fs_info; in add_new_free_space()
563 struct btrfs_fs_info *fs_info = block_group->fs_info; in sample_block_group_extent_item() local
575 lockdep_assert_held_read(&fs_info->commit_root_sem); in sample_block_group_extent_item()
581 extent_root = btrfs_extent_root(fs_info, max_t(u64, block_group->start, in sample_block_group_extent_item()
608 lockdep_assert_held_read(&fs_info->commit_root_sem); in sample_block_group_extent_item()
650 struct btrfs_fs_info *fs_info = block_group->fs_info; in load_block_group_size_class() local
661 lockdep_assert_held_read(&fs_info->commit_root_sem); in load_block_group_size_class()
683 struct btrfs_fs_info *fs_info = block_group->fs_info; in load_extent_tree_free() local
699 extent_root = btrfs_extent_root(fs_info, last); in load_extent_tree_free()
733 if (btrfs_fs_closing(fs_info) > 1) { in load_extent_tree_free()
746 rwsem_is_contended(&fs_info->commit_root_sem)) { in load_extent_tree_free()
748 up_read(&fs_info->commit_root_sem); in load_extent_tree_free()
752 down_read(&fs_info->commit_root_sem); in load_extent_tree_free()
788 fs_info->nodesize; in load_extent_tree_free()
813 struct btrfs_fs_info *fs_info; in caching_thread() local
819 fs_info = block_group->fs_info; in caching_thread()
822 down_read(&fs_info->commit_root_sem); in caching_thread()
825 if (btrfs_test_opt(fs_info, SPACE_CACHE)) { in caching_thread()
849 if (btrfs_fs_compat_ro(fs_info, FREE_SPACE_TREE) && in caching_thread()
850 !(test_bit(BTRFS_FS_FREE_SPACE_TREE_UNTRUSTED, &fs_info->flags))) in caching_thread()
874 up_read(&fs_info->commit_root_sem); in caching_thread()
886 struct btrfs_fs_info *fs_info = cache->fs_info; in btrfs_cache_block_group() local
891 if (btrfs_is_zoned(fs_info)) in btrfs_cache_block_group()
920 write_lock(&fs_info->block_group_cache_lock); in btrfs_cache_block_group()
922 list_add_tail(&caching_ctl->list, &fs_info->caching_block_groups); in btrfs_cache_block_group()
923 write_unlock(&fs_info->block_group_cache_lock); in btrfs_cache_block_group()
927 btrfs_queue_work(fs_info->caching_workers, &caching_ctl->work); in btrfs_cache_block_group()
937 static void clear_avail_alloc_bits(struct btrfs_fs_info *fs_info, u64 flags) in clear_avail_alloc_bits() argument
942 write_seqlock(&fs_info->profiles_lock); in clear_avail_alloc_bits()
944 fs_info->avail_data_alloc_bits &= ~extra_flags; in clear_avail_alloc_bits()
946 fs_info->avail_metadata_alloc_bits &= ~extra_flags; in clear_avail_alloc_bits()
948 fs_info->avail_system_alloc_bits &= ~extra_flags; in clear_avail_alloc_bits()
949 write_sequnlock(&fs_info->profiles_lock); in clear_avail_alloc_bits()
960 static void clear_incompat_bg_bits(struct btrfs_fs_info *fs_info, u64 flags) in clear_incompat_bg_bits() argument
968 struct list_head *head = &fs_info->space_info; in clear_incompat_bg_bits()
984 btrfs_clear_fs_incompat(fs_info, RAID56); in clear_incompat_bg_bits()
986 btrfs_clear_fs_incompat(fs_info, RAID1C34); in clear_incompat_bg_bits()
994 struct btrfs_fs_info *fs_info = trans->fs_info; in remove_block_group_item() local
999 root = btrfs_block_group_root(fs_info); in remove_block_group_item()
1017 struct btrfs_fs_info *fs_info = trans->fs_info; in btrfs_remove_block_group() local
1030 block_group = btrfs_lookup_block_group(fs_info, group_start); in btrfs_remove_block_group()
1040 btrfs_free_ref_tree_range(fs_info, block_group->start, in btrfs_remove_block_group()
1047 cluster = &fs_info->data_alloc_cluster; in btrfs_remove_block_group()
1056 cluster = &fs_info->meta_alloc_cluster; in btrfs_remove_block_group()
1105 write_lock(&fs_info->block_group_cache_lock); in btrfs_remove_block_group()
1107 &fs_info->block_group_cache_tree); in btrfs_remove_block_group()
1113 write_unlock(&fs_info->block_group_cache_lock); in btrfs_remove_block_group()
1124 clear_avail_alloc_bits(fs_info, block_group->flags); in btrfs_remove_block_group()
1127 clear_incompat_bg_bits(fs_info, block_group->flags); in btrfs_remove_block_group()
1136 write_lock(&fs_info->block_group_cache_lock); in btrfs_remove_block_group()
1141 list_for_each_entry(ctl, &fs_info->caching_block_groups, list) { in btrfs_remove_block_group()
1151 write_unlock(&fs_info->block_group_cache_lock); in btrfs_remove_block_group()
1169 if (btrfs_test_opt(fs_info, ENOSPC_DEBUG)) { in btrfs_remove_block_group()
1248 em_tree = &fs_info->mapping_tree; in btrfs_remove_block_group()
1260 btrfs_delayed_refs_rsv_release(fs_info, 1); in btrfs_remove_block_group()
1266 struct btrfs_fs_info *fs_info, const u64 chunk_offset) in btrfs_start_trans_remove_block_group() argument
1268 struct btrfs_root *root = btrfs_block_group_root(fs_info); in btrfs_start_trans_remove_block_group()
1269 struct extent_map_tree *em_tree = &fs_info->mapping_tree; in btrfs_start_trans_remove_block_group()
1363 if (btrfs_can_overcommit(cache->fs_info, sinfo, num_bytes, in inc_block_group_ro()
1370 if (btrfs_is_zoned(cache->fs_info)) { in inc_block_group_ro()
1382 if (ret == -ENOSPC && btrfs_test_opt(cache->fs_info, ENOSPC_DEBUG)) { in inc_block_group_ro()
1383 btrfs_info(cache->fs_info, in inc_block_group_ro()
1385 btrfs_dump_space_info(cache->fs_info, cache->space_info, 0, 0); in inc_block_group_ro()
1393 struct btrfs_fs_info *fs_info = bg->fs_info; in clean_pinned_extents() local
1399 spin_lock(&fs_info->trans_lock); in clean_pinned_extents()
1400 if (trans->transaction->list.prev != &fs_info->trans_list) { in clean_pinned_extents()
1405 spin_unlock(&fs_info->trans_lock); in clean_pinned_extents()
1417 mutex_lock(&fs_info->unused_bg_unpin_mutex); in clean_pinned_extents()
1428 mutex_unlock(&fs_info->unused_bg_unpin_mutex); in clean_pinned_extents()
1439 void btrfs_delete_unused_bgs(struct btrfs_fs_info *fs_info) in btrfs_delete_unused_bgs() argument
1444 const bool async_trim_enabled = btrfs_test_opt(fs_info, DISCARD_ASYNC); in btrfs_delete_unused_bgs()
1447 if (!test_bit(BTRFS_FS_OPEN, &fs_info->flags)) in btrfs_delete_unused_bgs()
1450 if (btrfs_fs_closing(fs_info)) in btrfs_delete_unused_bgs()
1457 if (!mutex_trylock(&fs_info->reclaim_bgs_lock)) in btrfs_delete_unused_bgs()
1460 spin_lock(&fs_info->unused_bgs_lock); in btrfs_delete_unused_bgs()
1461 while (!list_empty(&fs_info->unused_bgs)) { in btrfs_delete_unused_bgs()
1464 block_group = list_first_entry(&fs_info->unused_bgs, in btrfs_delete_unused_bgs()
1475 spin_unlock(&fs_info->unused_bgs_lock); in btrfs_delete_unused_bgs()
1477 btrfs_discard_cancel_work(&fs_info->discard_ctl, block_group); in btrfs_delete_unused_bgs()
1487 if (btrfs_test_opt(fs_info, DISCARD_ASYNC) && in btrfs_delete_unused_bgs()
1492 btrfs_discard_queue_work(&fs_info->discard_ctl, in btrfs_delete_unused_bgs()
1534 trans = btrfs_start_trans_remove_block_group(fs_info, in btrfs_delete_unused_bgs()
1558 spin_lock(&fs_info->discard_ctl.lock); in btrfs_delete_unused_bgs()
1560 spin_unlock(&fs_info->discard_ctl.lock); in btrfs_delete_unused_bgs()
1562 btrfs_discard_queue_work(&fs_info->discard_ctl, in btrfs_delete_unused_bgs()
1566 spin_unlock(&fs_info->discard_ctl.lock); in btrfs_delete_unused_bgs()
1572 btrfs_space_info_update_bytes_pinned(fs_info, space_info, in btrfs_delete_unused_bgs()
1587 if (!async_trim_enabled && btrfs_test_opt(fs_info, DISCARD_ASYNC)) in btrfs_delete_unused_bgs()
1594 trimming = btrfs_test_opt(fs_info, DISCARD_SYNC) || in btrfs_delete_unused_bgs()
1595 btrfs_is_zoned(fs_info); in btrfs_delete_unused_bgs()
1619 spin_lock(&fs_info->unused_bgs_lock); in btrfs_delete_unused_bgs()
1627 spin_unlock(&fs_info->unused_bgs_lock); in btrfs_delete_unused_bgs()
1634 spin_lock(&fs_info->unused_bgs_lock); in btrfs_delete_unused_bgs()
1636 spin_unlock(&fs_info->unused_bgs_lock); in btrfs_delete_unused_bgs()
1637 mutex_unlock(&fs_info->reclaim_bgs_lock); in btrfs_delete_unused_bgs()
1642 mutex_unlock(&fs_info->reclaim_bgs_lock); in btrfs_delete_unused_bgs()
1644 btrfs_discard_punt_unused_bgs_list(fs_info); in btrfs_delete_unused_bgs()
1649 struct btrfs_fs_info *fs_info = bg->fs_info; in btrfs_mark_bg_unused() local
1651 spin_lock(&fs_info->unused_bgs_lock); in btrfs_mark_bg_unused()
1655 list_add_tail(&bg->bg_list, &fs_info->unused_bgs); in btrfs_mark_bg_unused()
1657 spin_unlock(&fs_info->unused_bgs_lock); in btrfs_mark_bg_unused()
1675 static inline bool btrfs_should_reclaim(struct btrfs_fs_info *fs_info) in btrfs_should_reclaim() argument
1677 if (btrfs_is_zoned(fs_info)) in btrfs_should_reclaim()
1678 return btrfs_zoned_should_reclaim(fs_info); in btrfs_should_reclaim()
1708 struct btrfs_fs_info *fs_info = in btrfs_reclaim_bgs_work() local
1713 if (!test_bit(BTRFS_FS_OPEN, &fs_info->flags)) in btrfs_reclaim_bgs_work()
1716 if (btrfs_fs_closing(fs_info)) in btrfs_reclaim_bgs_work()
1719 if (!btrfs_should_reclaim(fs_info)) in btrfs_reclaim_bgs_work()
1722 sb_start_write(fs_info->sb); in btrfs_reclaim_bgs_work()
1724 if (!btrfs_exclop_start(fs_info, BTRFS_EXCLOP_BALANCE)) { in btrfs_reclaim_bgs_work()
1725 sb_end_write(fs_info->sb); in btrfs_reclaim_bgs_work()
1733 if (!mutex_trylock(&fs_info->reclaim_bgs_lock)) { in btrfs_reclaim_bgs_work()
1734 btrfs_exclop_finish(fs_info); in btrfs_reclaim_bgs_work()
1735 sb_end_write(fs_info->sb); in btrfs_reclaim_bgs_work()
1739 spin_lock(&fs_info->unused_bgs_lock); in btrfs_reclaim_bgs_work()
1745 list_sort(NULL, &fs_info->reclaim_bgs, reclaim_bgs_cmp); in btrfs_reclaim_bgs_work()
1746 while (!list_empty(&fs_info->reclaim_bgs)) { in btrfs_reclaim_bgs_work()
1750 bg = list_first_entry(&fs_info->reclaim_bgs, in btrfs_reclaim_bgs_work()
1756 spin_unlock(&fs_info->unused_bgs_lock); in btrfs_reclaim_bgs_work()
1785 if (!btrfs_test_opt(fs_info, DISCARD_ASYNC)) in btrfs_reclaim_bgs_work()
1810 if (btrfs_fs_closing(fs_info)) { in btrfs_reclaim_bgs_work()
1827 btrfs_info(fs_info, in btrfs_reclaim_bgs_work()
1833 ret = btrfs_relocate_chunk(fs_info, bg->start); in btrfs_reclaim_bgs_work()
1836 btrfs_err(fs_info, "error relocating chunk %llu", in btrfs_reclaim_bgs_work()
1842 spin_lock(&fs_info->unused_bgs_lock); in btrfs_reclaim_bgs_work()
1844 spin_unlock(&fs_info->unused_bgs_lock); in btrfs_reclaim_bgs_work()
1845 mutex_unlock(&fs_info->reclaim_bgs_lock); in btrfs_reclaim_bgs_work()
1846 btrfs_exclop_finish(fs_info); in btrfs_reclaim_bgs_work()
1847 sb_end_write(fs_info->sb); in btrfs_reclaim_bgs_work()
1850 void btrfs_reclaim_bgs(struct btrfs_fs_info *fs_info) in btrfs_reclaim_bgs() argument
1852 spin_lock(&fs_info->unused_bgs_lock); in btrfs_reclaim_bgs()
1853 if (!list_empty(&fs_info->reclaim_bgs)) in btrfs_reclaim_bgs()
1854 queue_work(system_unbound_wq, &fs_info->reclaim_bgs_work); in btrfs_reclaim_bgs()
1855 spin_unlock(&fs_info->unused_bgs_lock); in btrfs_reclaim_bgs()
1860 struct btrfs_fs_info *fs_info = bg->fs_info; in btrfs_mark_bg_to_reclaim() local
1862 spin_lock(&fs_info->unused_bgs_lock); in btrfs_mark_bg_to_reclaim()
1866 list_add_tail(&bg->bg_list, &fs_info->reclaim_bgs); in btrfs_mark_bg_to_reclaim()
1868 spin_unlock(&fs_info->unused_bgs_lock); in btrfs_mark_bg_to_reclaim()
1871 static int read_bg_from_eb(struct btrfs_fs_info *fs_info, struct btrfs_key *key, in read_bg_from_eb() argument
1885 em_tree = &fs_info->mapping_tree; in read_bg_from_eb()
1890 btrfs_err(fs_info, in read_bg_from_eb()
1897 btrfs_err(fs_info, in read_bg_from_eb()
1910 btrfs_err(fs_info, in read_bg_from_eb()
1922 static int find_first_block_group(struct btrfs_fs_info *fs_info, in find_first_block_group() argument
1926 struct btrfs_root *root = btrfs_block_group_root(fs_info); in find_first_block_group()
1933 return read_bg_from_eb(fs_info, &found_key, path); in find_first_block_group()
1939 static void set_avail_alloc_bits(struct btrfs_fs_info *fs_info, u64 flags) in set_avail_alloc_bits() argument
1944 write_seqlock(&fs_info->profiles_lock); in set_avail_alloc_bits()
1946 fs_info->avail_data_alloc_bits |= extra_flags; in set_avail_alloc_bits()
1948 fs_info->avail_metadata_alloc_bits |= extra_flags; in set_avail_alloc_bits()
1950 fs_info->avail_system_alloc_bits |= extra_flags; in set_avail_alloc_bits()
1951 write_sequnlock(&fs_info->profiles_lock); in set_avail_alloc_bits()
1968 int btrfs_rmap_block(struct btrfs_fs_info *fs_info, u64 chunk_start, in btrfs_rmap_block() argument
1980 em = btrfs_get_chunk_map(fs_info, chunk_start, 1); in btrfs_rmap_block()
2047 struct btrfs_fs_info *fs_info = cache->fs_info; in exclude_super_stripes() local
2048 const bool zoned = btrfs_is_zoned(fs_info); in exclude_super_stripes()
2057 ret = btrfs_add_excluded_extent(fs_info, cache->start, in exclude_super_stripes()
2065 ret = btrfs_rmap_block(fs_info, cache->start, in exclude_super_stripes()
2072 btrfs_err(fs_info, in exclude_super_stripes()
2083 ret = btrfs_add_excluded_extent(fs_info, logical[nr], in exclude_super_stripes()
2097 struct btrfs_fs_info *fs_info, u64 start) in btrfs_create_block_group_cache() argument
2114 cache->fs_info = fs_info; in btrfs_create_block_group_cache()
2115 cache->full_stripe_len = btrfs_full_stripe_len(fs_info, start); in btrfs_create_block_group_cache()
2143 static int check_chunk_block_group_mappings(struct btrfs_fs_info *fs_info) in check_chunk_block_group_mappings() argument
2145 struct extent_map_tree *map_tree = &fs_info->mapping_tree; in check_chunk_block_group_mappings()
2163 bg = btrfs_lookup_block_group(fs_info, em->start); in check_chunk_block_group_mappings()
2165 btrfs_err(fs_info, in check_chunk_block_group_mappings()
2175 btrfs_err(fs_info, in check_chunk_block_group_mappings()
2311 static int fill_dummy_bgs(struct btrfs_fs_info *fs_info) in fill_dummy_bgs() argument
2313 struct extent_map_tree *em_tree = &fs_info->mapping_tree; in fill_dummy_bgs()
2324 bg = btrfs_create_block_group_cache(fs_info, em->start); in fill_dummy_bgs()
2336 ret = btrfs_add_block_group_cache(fs_info, bg); in fill_dummy_bgs()
2353 btrfs_add_bg_to_space_info(fs_info, bg); in fill_dummy_bgs()
2355 set_avail_alloc_bits(fs_info, bg->flags); in fill_dummy_bgs()
2358 btrfs_init_global_block_rsv(fs_info); in fill_dummy_bgs()
2483 struct btrfs_fs_info *fs_info = trans->fs_info; in insert_block_group_item() local
2485 struct btrfs_root *root = btrfs_block_group_root(fs_info); in insert_block_group_item()
2516 struct btrfs_fs_info *fs_info = device->fs_info; in insert_dev_extent() local
2517 struct btrfs_root *root = fs_info->dev_root; in insert_dev_extent()
2560 struct btrfs_fs_info *fs_info = trans->fs_info; in insert_dev_extents() local
2569 em = btrfs_get_chunk_map(fs_info, chunk_offset, chunk_size); in insert_dev_extents()
2585 mutex_lock(&fs_info->fs_devices->device_list_mutex); in insert_dev_extents()
2595 mutex_unlock(&fs_info->fs_devices->device_list_mutex); in insert_dev_extents()
2610 struct btrfs_fs_info *fs_info = trans->fs_info; in btrfs_create_pending_block_groups() local
2630 mutex_lock(&fs_info->chunk_mutex); in btrfs_create_pending_block_groups()
2632 mutex_unlock(&fs_info->chunk_mutex); in btrfs_create_pending_block_groups()
2653 btrfs_delayed_refs_rsv_release(fs_info, 1); in btrfs_create_pending_block_groups()
2663 static u64 calculate_global_root_id(struct btrfs_fs_info *fs_info, u64 offset) in calculate_global_root_id() argument
2668 if (!btrfs_fs_incompat(fs_info, EXTENT_TREE_V2)) in calculate_global_root_id()
2672 if (btrfs_super_total_bytes(fs_info->super_copy) <= (SZ_1G * 10ULL)) in calculate_global_root_id()
2676 div64_u64_rem(offset, fs_info->nr_global_roots, &index); in calculate_global_root_id()
2684 struct btrfs_fs_info *fs_info = trans->fs_info; in btrfs_make_block_group() local
2690 cache = btrfs_create_block_group_cache(fs_info, chunk_offset); in btrfs_make_block_group()
2699 cache->global_root_id = calculate_global_root_id(fs_info, cache->start); in btrfs_make_block_group()
2701 if (btrfs_fs_compat_ro(fs_info, FREE_SPACE_TREE)) in btrfs_make_block_group()
2727 cache->space_info = btrfs_find_space_info(fs_info, cache->flags); in btrfs_make_block_group()
2730 ret = btrfs_add_block_group_cache(fs_info, cache); in btrfs_make_block_group()
2741 trace_btrfs_add_block_group(fs_info, cache, 1); in btrfs_make_block_group()
2742 btrfs_add_bg_to_space_info(fs_info, cache); in btrfs_make_block_group()
2743 btrfs_update_global_block_rsv(fs_info); in btrfs_make_block_group()
2758 set_avail_alloc_bits(fs_info, type); in btrfs_make_block_group()
2774 struct btrfs_fs_info *fs_info = cache->fs_info; in btrfs_inc_block_group_ro() local
2776 struct btrfs_root *root = btrfs_block_group_root(fs_info); in btrfs_inc_block_group_ro()
2787 if (sb_rdonly(fs_info->sb)) { in btrfs_inc_block_group_ro()
2788 mutex_lock(&fs_info->ro_block_group_mutex); in btrfs_inc_block_group_ro()
2790 mutex_unlock(&fs_info->ro_block_group_mutex); in btrfs_inc_block_group_ro()
2806 mutex_lock(&fs_info->ro_block_group_mutex); in btrfs_inc_block_group_ro()
2810 mutex_unlock(&fs_info->ro_block_group_mutex); in btrfs_inc_block_group_ro()
2813 ret = btrfs_wait_for_commit(fs_info, transid); in btrfs_inc_block_group_ro()
2825 alloc_flags = btrfs_get_alloc_profile(fs_info, cache->flags); in btrfs_inc_block_group_ro()
2845 alloc_flags = btrfs_get_alloc_profile(fs_info, cache->space_info->flags); in btrfs_inc_block_group_ro()
2853 ret = btrfs_zoned_activate_one_bg(fs_info, cache->space_info, true); in btrfs_inc_block_group_ro()
2862 alloc_flags = btrfs_get_alloc_profile(fs_info, cache->flags); in btrfs_inc_block_group_ro()
2863 mutex_lock(&fs_info->chunk_mutex); in btrfs_inc_block_group_ro()
2865 mutex_unlock(&fs_info->chunk_mutex); in btrfs_inc_block_group_ro()
2868 mutex_unlock(&fs_info->ro_block_group_mutex); in btrfs_inc_block_group_ro()
2884 if (btrfs_is_zoned(cache->fs_info)) { in btrfs_dec_block_group_ro()
2906 struct btrfs_fs_info *fs_info = trans->fs_info; in update_block_group_item() local
2908 struct btrfs_root *root = btrfs_block_group_root(fs_info); in update_block_group_item()
2968 struct btrfs_fs_info *fs_info = block_group->fs_info; in cache_save_setup() local
2969 struct btrfs_root *root = fs_info->tree_root; in cache_save_setup()
2978 if (!btrfs_test_opt(fs_info, SPACE_CACHE)) in cache_save_setup()
3046 ret = btrfs_check_trunc_cache_free_space(fs_info, in cache_save_setup()
3047 &fs_info->global_block_rsv); in cache_save_setup()
3058 !btrfs_test_opt(fs_info, SPACE_CACHE)) { in cache_save_setup()
3091 cache_size *= fs_info->sectorsize; in cache_save_setup()
3131 struct btrfs_fs_info *fs_info = trans->fs_info; in btrfs_setup_space_cache() local
3137 !btrfs_test_opt(fs_info, SPACE_CACHE)) in btrfs_setup_space_cache()
3169 struct btrfs_fs_info *fs_info = trans->fs_info; in btrfs_start_dirty_block_groups() local
3288 btrfs_delayed_refs_rsv_release(fs_info, 1); in btrfs_start_dirty_block_groups()
3326 btrfs_cleanup_dirty_bgs(cur_trans, fs_info); in btrfs_start_dirty_block_groups()
3335 struct btrfs_fs_info *fs_info = trans->fs_info; in btrfs_write_dirty_block_groups() local
3436 btrfs_delayed_refs_rsv_release(fs_info, 1); in btrfs_write_dirty_block_groups()
3460 struct btrfs_fs_info *info = trans->fs_info; in btrfs_update_block_group()
3605 trace_btrfs_space_reservation(cache->fs_info, "space_info", in btrfs_add_reserved_bytes()
3607 btrfs_space_info_update_bytes_may_use(cache->fs_info, in btrfs_add_reserved_bytes()
3617 btrfs_try_granting_tickets(cache->fs_info, space_info); in btrfs_add_reserved_bytes()
3653 btrfs_try_granting_tickets(cache->fs_info, space_info); in btrfs_free_reserved_bytes()
3668 static int should_alloc_chunk(struct btrfs_fs_info *fs_info, in should_alloc_chunk() argument
3682 thresh = btrfs_super_total_bytes(fs_info->super_copy); in should_alloc_chunk()
3696 u64 alloc_flags = btrfs_get_alloc_profile(trans->fs_info, type); in btrfs_force_chunk_alloc()
3760 const u64 sys_flags = btrfs_system_alloc_profile(trans->fs_info); in do_chunk_alloc()
3905 struct btrfs_fs_info *fs_info = trans->fs_info; in btrfs_chunk_alloc() local
3945 space_info = btrfs_find_space_info(fs_info, flags); in btrfs_chunk_alloc()
3952 should_alloc = should_alloc_chunk(fs_info, space_info, force); in btrfs_chunk_alloc()
3974 mutex_lock(&fs_info->chunk_mutex); in btrfs_chunk_alloc()
3975 mutex_unlock(&fs_info->chunk_mutex); in btrfs_chunk_alloc()
3986 mutex_lock(&fs_info->chunk_mutex); in btrfs_chunk_alloc()
4001 if (flags & BTRFS_BLOCK_GROUP_DATA && fs_info->metadata_ratio) { in btrfs_chunk_alloc()
4002 fs_info->data_chunk_allocations++; in btrfs_chunk_alloc()
4003 if (!(fs_info->data_chunk_allocations % in btrfs_chunk_alloc()
4004 fs_info->metadata_ratio)) in btrfs_chunk_alloc()
4005 force_metadata_allocation(fs_info); in btrfs_chunk_alloc()
4039 mutex_unlock(&fs_info->chunk_mutex); in btrfs_chunk_alloc()
4044 static u64 get_profile_num_devs(struct btrfs_fs_info *fs_info, u64 type) in get_profile_num_devs() argument
4050 num_dev = fs_info->fs_devices->rw_devices; in get_profile_num_devs()
4059 struct btrfs_fs_info *fs_info = trans->fs_info; in reserve_chunk_space() local
4068 lockdep_assert_held(&fs_info->chunk_mutex); in reserve_chunk_space()
4070 info = btrfs_find_space_info(fs_info, BTRFS_BLOCK_GROUP_SYSTEM); in reserve_chunk_space()
4075 if (left < bytes && btrfs_test_opt(fs_info, ENOSPC_DEBUG)) { in reserve_chunk_space()
4076 btrfs_info(fs_info, "left=%llu, need=%llu, flags=%llu", in reserve_chunk_space()
4078 btrfs_dump_space_info(fs_info, info, 0, 0); in reserve_chunk_space()
4082 u64 flags = btrfs_system_alloc_profile(fs_info); in reserve_chunk_space()
4099 ret = btrfs_zoned_activate_one_bg(fs_info, info, true); in reserve_chunk_space()
4118 ret = btrfs_block_rsv_add(fs_info, in reserve_chunk_space()
4119 &fs_info->chunk_block_rsv, in reserve_chunk_space()
4132 struct btrfs_fs_info *fs_info = trans->fs_info; in check_system_chunk() local
4133 const u64 num_devs = get_profile_num_devs(fs_info, type); in check_system_chunk()
4137 bytes = btrfs_calc_metadata_size(fs_info, num_devs) + in check_system_chunk()
4138 btrfs_calc_insert_metadata_size(fs_info, 1); in check_system_chunk()
4162 struct btrfs_fs_info *fs_info = trans->fs_info; in btrfs_reserve_chunk_metadata() local
4166 bytes = btrfs_calc_insert_metadata_size(fs_info, 1); in btrfs_reserve_chunk_metadata()
4168 bytes = btrfs_calc_metadata_size(fs_info, 1); in btrfs_reserve_chunk_metadata()
4170 mutex_lock(&fs_info->chunk_mutex); in btrfs_reserve_chunk_metadata()
4172 mutex_unlock(&fs_info->chunk_mutex); in btrfs_reserve_chunk_metadata()
4324 struct btrfs_fs_info *fs_info = block_group->fs_info; in btrfs_unfreeze_block_group() local
4335 em_tree = &fs_info->mapping_tree; in btrfs_unfreeze_block_group()
4442 if (btrfs_is_zoned(bg->fs_info)) in btrfs_block_group_should_use_size_class()