Lines Matching refs:fs_info

105 static u64 block_rsv_release_bytes(struct btrfs_fs_info *fs_info,  in block_rsv_release_bytes()  argument
154 btrfs_space_info_free_bytes_may_use(fs_info, in block_rsv_release_bytes()
184 void btrfs_init_metadata_block_rsv(struct btrfs_fs_info *fs_info, in btrfs_init_metadata_block_rsv() argument
189 rsv->space_info = btrfs_find_space_info(fs_info, in btrfs_init_metadata_block_rsv()
193 struct btrfs_block_rsv *btrfs_alloc_block_rsv(struct btrfs_fs_info *fs_info, in btrfs_alloc_block_rsv() argument
202 btrfs_init_metadata_block_rsv(fs_info, block_rsv, type); in btrfs_alloc_block_rsv()
206 void btrfs_free_block_rsv(struct btrfs_fs_info *fs_info, in btrfs_free_block_rsv() argument
211 btrfs_block_rsv_release(fs_info, rsv, (u64)-1, NULL); in btrfs_free_block_rsv()
215 int btrfs_block_rsv_add(struct btrfs_fs_info *fs_info, in btrfs_block_rsv_add() argument
224 ret = btrfs_reserve_metadata_bytes(fs_info, block_rsv, num_bytes, flush); in btrfs_block_rsv_add()
245 int btrfs_block_rsv_refill(struct btrfs_fs_info *fs_info, in btrfs_block_rsv_refill() argument
264 ret = btrfs_reserve_metadata_bytes(fs_info, block_rsv, num_bytes, flush); in btrfs_block_rsv_refill()
273 u64 btrfs_block_rsv_release(struct btrfs_fs_info *fs_info, in btrfs_block_rsv_release() argument
277 struct btrfs_block_rsv *global_rsv = &fs_info->global_block_rsv; in btrfs_block_rsv_release()
278 struct btrfs_block_rsv *delayed_rsv = &fs_info->delayed_refs_rsv; in btrfs_block_rsv_release()
293 return block_rsv_release_bytes(fs_info, block_rsv, target, num_bytes, in btrfs_block_rsv_release()
324 void btrfs_update_global_block_rsv(struct btrfs_fs_info *fs_info) in btrfs_update_global_block_rsv() argument
326 struct btrfs_block_rsv *block_rsv = &fs_info->global_block_rsv; in btrfs_update_global_block_rsv()
329 u64 num_bytes = btrfs_root_used(&fs_info->tree_root->root_item); in btrfs_update_global_block_rsv()
340 read_lock(&fs_info->global_root_lock); in btrfs_update_global_block_rsv()
341 rbtree_postorder_for_each_entry_safe(root, tmp, &fs_info->global_root_tree, in btrfs_update_global_block_rsv()
350 read_unlock(&fs_info->global_root_lock); in btrfs_update_global_block_rsv()
352 if (btrfs_fs_compat_ro(fs_info, BLOCK_GROUP_TREE)) { in btrfs_update_global_block_rsv()
353 num_bytes += btrfs_root_used(&fs_info->block_group_root->root_item); in btrfs_update_global_block_rsv()
369 btrfs_calc_insert_metadata_size(fs_info, min_items) + in btrfs_update_global_block_rsv()
370 btrfs_calc_delayed_ref_bytes(fs_info, in btrfs_update_global_block_rsv()
380 btrfs_space_info_update_bytes_may_use(fs_info, sinfo, in btrfs_update_global_block_rsv()
385 btrfs_space_info_update_bytes_may_use(fs_info, sinfo, in btrfs_update_global_block_rsv()
388 btrfs_try_granting_tickets(fs_info, sinfo); in btrfs_update_global_block_rsv()
401 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_init_root_block_rsv() local
408 root->block_rsv = &fs_info->delayed_refs_rsv; in btrfs_init_root_block_rsv()
413 root->block_rsv = &fs_info->global_block_rsv; in btrfs_init_root_block_rsv()
416 root->block_rsv = &fs_info->chunk_block_rsv; in btrfs_init_root_block_rsv()
424 void btrfs_init_global_block_rsv(struct btrfs_fs_info *fs_info) in btrfs_init_global_block_rsv() argument
428 space_info = btrfs_find_space_info(fs_info, BTRFS_BLOCK_GROUP_SYSTEM); in btrfs_init_global_block_rsv()
429 fs_info->chunk_block_rsv.space_info = space_info; in btrfs_init_global_block_rsv()
431 space_info = btrfs_find_space_info(fs_info, BTRFS_BLOCK_GROUP_METADATA); in btrfs_init_global_block_rsv()
432 fs_info->global_block_rsv.space_info = space_info; in btrfs_init_global_block_rsv()
433 fs_info->trans_block_rsv.space_info = space_info; in btrfs_init_global_block_rsv()
434 fs_info->empty_block_rsv.space_info = space_info; in btrfs_init_global_block_rsv()
435 fs_info->delayed_block_rsv.space_info = space_info; in btrfs_init_global_block_rsv()
436 fs_info->delayed_refs_rsv.space_info = space_info; in btrfs_init_global_block_rsv()
438 btrfs_update_global_block_rsv(fs_info); in btrfs_init_global_block_rsv()
441 void btrfs_release_global_block_rsv(struct btrfs_fs_info *fs_info) in btrfs_release_global_block_rsv() argument
443 btrfs_block_rsv_release(fs_info, &fs_info->global_block_rsv, (u64)-1, in btrfs_release_global_block_rsv()
445 WARN_ON(fs_info->trans_block_rsv.size > 0); in btrfs_release_global_block_rsv()
446 WARN_ON(fs_info->trans_block_rsv.reserved > 0); in btrfs_release_global_block_rsv()
447 WARN_ON(fs_info->chunk_block_rsv.size > 0); in btrfs_release_global_block_rsv()
448 WARN_ON(fs_info->chunk_block_rsv.reserved > 0); in btrfs_release_global_block_rsv()
449 WARN_ON(fs_info->delayed_block_rsv.size > 0); in btrfs_release_global_block_rsv()
450 WARN_ON(fs_info->delayed_block_rsv.reserved > 0); in btrfs_release_global_block_rsv()
451 WARN_ON(fs_info->delayed_refs_rsv.reserved > 0); in btrfs_release_global_block_rsv()
452 WARN_ON(fs_info->delayed_refs_rsv.size > 0); in btrfs_release_global_block_rsv()
459 struct btrfs_fs_info *fs_info = root->fs_info; in get_block_rsv() local
463 (root == fs_info->uuid_root) || in get_block_rsv()
472 block_rsv = &fs_info->empty_block_rsv; in get_block_rsv()
481 struct btrfs_fs_info *fs_info = root->fs_info; in btrfs_use_block_rsv() local
483 struct btrfs_block_rsv *global_rsv = &fs_info->global_block_rsv; in btrfs_use_block_rsv()
501 btrfs_update_global_block_rsv(fs_info); in btrfs_use_block_rsv()
510 btrfs_test_opt(fs_info, ENOSPC_DEBUG)) { in btrfs_use_block_rsv()
520 ret = btrfs_reserve_metadata_bytes(fs_info, block_rsv, blocksize, in btrfs_use_block_rsv()
542 ret = btrfs_reserve_metadata_bytes(fs_info, block_rsv, blocksize, in btrfs_use_block_rsv()
550 int btrfs_check_trunc_cache_free_space(struct btrfs_fs_info *fs_info, in btrfs_check_trunc_cache_free_space() argument
557 needed_bytes = btrfs_calc_insert_metadata_size(fs_info, 1) + in btrfs_check_trunc_cache_free_space()
558 btrfs_calc_metadata_size(fs_info, 1); in btrfs_check_trunc_cache_free_space()