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