Lines Matching refs:block_rsv
111 static int block_rsv_use_bytes(struct btrfs_block_rsv *block_rsv,
4346 struct btrfs_block_rsv *block_rsv; in shrink_delalloc() local
4362 block_rsv = &root->fs_info->delalloc_block_rsv; in shrink_delalloc()
4363 space_info = block_rsv->space_info; in shrink_delalloc()
4660 struct btrfs_block_rsv *block_rsv, in reserve_metadata_bytes() argument
4664 struct btrfs_space_info *space_info = block_rsv->space_info; in reserve_metadata_bytes()
4798 if (block_rsv != global_rsv && in reserve_metadata_bytes()
4819 struct btrfs_block_rsv *block_rsv = NULL; in get_block_rsv() local
4822 block_rsv = trans->block_rsv; in get_block_rsv()
4825 block_rsv = trans->block_rsv; in get_block_rsv()
4828 block_rsv = trans->block_rsv; in get_block_rsv()
4830 if (!block_rsv) in get_block_rsv()
4831 block_rsv = root->block_rsv; in get_block_rsv()
4833 if (!block_rsv) in get_block_rsv()
4834 block_rsv = &root->fs_info->empty_block_rsv; in get_block_rsv()
4836 return block_rsv; in get_block_rsv()
4839 static int block_rsv_use_bytes(struct btrfs_block_rsv *block_rsv, in block_rsv_use_bytes() argument
4843 spin_lock(&block_rsv->lock); in block_rsv_use_bytes()
4844 if (block_rsv->reserved >= num_bytes) { in block_rsv_use_bytes()
4845 block_rsv->reserved -= num_bytes; in block_rsv_use_bytes()
4846 if (block_rsv->reserved < block_rsv->size) in block_rsv_use_bytes()
4847 block_rsv->full = 0; in block_rsv_use_bytes()
4850 spin_unlock(&block_rsv->lock); in block_rsv_use_bytes()
4854 static void block_rsv_add_bytes(struct btrfs_block_rsv *block_rsv, in block_rsv_add_bytes() argument
4857 spin_lock(&block_rsv->lock); in block_rsv_add_bytes()
4858 block_rsv->reserved += num_bytes; in block_rsv_add_bytes()
4860 block_rsv->size += num_bytes; in block_rsv_add_bytes()
4861 else if (block_rsv->reserved >= block_rsv->size) in block_rsv_add_bytes()
4862 block_rsv->full = 1; in block_rsv_add_bytes()
4863 spin_unlock(&block_rsv->lock); in block_rsv_add_bytes()
4892 struct btrfs_block_rsv *block_rsv, in block_rsv_release_bytes() argument
4895 struct btrfs_space_info *space_info = block_rsv->space_info; in block_rsv_release_bytes()
4897 spin_lock(&block_rsv->lock); in block_rsv_release_bytes()
4899 num_bytes = block_rsv->size; in block_rsv_release_bytes()
4900 block_rsv->size -= num_bytes; in block_rsv_release_bytes()
4901 if (block_rsv->reserved >= block_rsv->size) { in block_rsv_release_bytes()
4902 num_bytes = block_rsv->reserved - block_rsv->size; in block_rsv_release_bytes()
4903 block_rsv->reserved = block_rsv->size; in block_rsv_release_bytes()
4904 block_rsv->full = 1; in block_rsv_release_bytes()
4908 spin_unlock(&block_rsv->lock); in block_rsv_release_bytes()
4958 struct btrfs_block_rsv *block_rsv; in btrfs_alloc_block_rsv() local
4961 block_rsv = kmalloc(sizeof(*block_rsv), GFP_NOFS); in btrfs_alloc_block_rsv()
4962 if (!block_rsv) in btrfs_alloc_block_rsv()
4965 btrfs_init_block_rsv(block_rsv, type); in btrfs_alloc_block_rsv()
4966 block_rsv->space_info = __find_space_info(fs_info, in btrfs_alloc_block_rsv()
4968 return block_rsv; in btrfs_alloc_block_rsv()
4986 struct btrfs_block_rsv *block_rsv, u64 num_bytes, in btrfs_block_rsv_add() argument
4994 ret = reserve_metadata_bytes(root, block_rsv, num_bytes, flush); in btrfs_block_rsv_add()
4996 block_rsv_add_bytes(block_rsv, num_bytes, 1); in btrfs_block_rsv_add()
5004 struct btrfs_block_rsv *block_rsv, int min_factor) in btrfs_block_rsv_check() argument
5009 if (!block_rsv) in btrfs_block_rsv_check()
5012 spin_lock(&block_rsv->lock); in btrfs_block_rsv_check()
5013 num_bytes = div_factor(block_rsv->size, min_factor); in btrfs_block_rsv_check()
5014 if (block_rsv->reserved >= num_bytes) in btrfs_block_rsv_check()
5016 spin_unlock(&block_rsv->lock); in btrfs_block_rsv_check()
5022 struct btrfs_block_rsv *block_rsv, u64 min_reserved, in btrfs_block_rsv_refill() argument
5028 if (!block_rsv) in btrfs_block_rsv_refill()
5031 spin_lock(&block_rsv->lock); in btrfs_block_rsv_refill()
5033 if (block_rsv->reserved >= num_bytes) in btrfs_block_rsv_refill()
5036 num_bytes -= block_rsv->reserved; in btrfs_block_rsv_refill()
5037 spin_unlock(&block_rsv->lock); in btrfs_block_rsv_refill()
5042 ret = reserve_metadata_bytes(root, block_rsv, num_bytes, flush); in btrfs_block_rsv_refill()
5044 block_rsv_add_bytes(block_rsv, num_bytes, 0); in btrfs_block_rsv_refill()
5059 struct btrfs_block_rsv *block_rsv, in btrfs_block_rsv_release() argument
5063 if (global_rsv == block_rsv || in btrfs_block_rsv_release()
5064 block_rsv->space_info != global_rsv->space_info) in btrfs_block_rsv_release()
5066 block_rsv_release_bytes(root->fs_info, block_rsv, global_rsv, in btrfs_block_rsv_release()
5107 struct btrfs_block_rsv *block_rsv = &fs_info->global_block_rsv; in update_global_block_rsv() local
5108 struct btrfs_space_info *sinfo = block_rsv->space_info; in update_global_block_rsv()
5114 spin_lock(&block_rsv->lock); in update_global_block_rsv()
5116 block_rsv->size = min_t(u64, num_bytes, 512 * 1024 * 1024); in update_global_block_rsv()
5124 block_rsv->reserved += num_bytes; in update_global_block_rsv()
5130 if (block_rsv->reserved >= block_rsv->size) { in update_global_block_rsv()
5131 num_bytes = block_rsv->reserved - block_rsv->size; in update_global_block_rsv()
5135 block_rsv->reserved = block_rsv->size; in update_global_block_rsv()
5136 block_rsv->full = 1; in update_global_block_rsv()
5139 spin_unlock(&block_rsv->lock); in update_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()
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()
5185 if (!trans->block_rsv) in btrfs_trans_release_metadata()
5193 btrfs_block_rsv_release(root, trans->block_rsv, trans->bytes_reserved); in btrfs_trans_release_metadata()
5376 struct btrfs_block_rsv *block_rsv = &root->fs_info->delalloc_block_rsv; in btrfs_delalloc_reserve_metadata() local
5439 ret = reserve_metadata_bytes(root, block_rsv, to_reserve, flush); in btrfs_delalloc_reserve_metadata()
5461 block_rsv_add_bytes(block_rsv, to_reserve, 1); in btrfs_delalloc_reserve_metadata()
5520 btrfs_block_rsv_release(root, block_rsv, to_free); in btrfs_delalloc_reserve_metadata()
7516 struct btrfs_block_rsv *block_rsv; in use_block_rsv() local
7521 block_rsv = get_block_rsv(trans, root); in use_block_rsv()
7523 if (unlikely(block_rsv->size == 0)) in use_block_rsv()
7526 ret = block_rsv_use_bytes(block_rsv, blocksize); in use_block_rsv()
7528 return block_rsv; in use_block_rsv()
7530 if (block_rsv->failfast) in use_block_rsv()
7533 if (block_rsv->type == BTRFS_BLOCK_RSV_GLOBAL && !global_updated) { in use_block_rsv()
7548 ret = reserve_metadata_bytes(root, block_rsv, blocksize, in use_block_rsv()
7551 return block_rsv; in use_block_rsv()
7557 if (block_rsv->type != BTRFS_BLOCK_RSV_GLOBAL && in use_block_rsv()
7558 block_rsv->space_info == global_rsv->space_info) { in use_block_rsv()
7567 struct btrfs_block_rsv *block_rsv, u32 blocksize) in unuse_block_rsv() argument
7569 block_rsv_add_bytes(block_rsv, blocksize, 0); in unuse_block_rsv()
7570 block_rsv_release_bytes(fs_info, block_rsv, NULL, 0); in unuse_block_rsv()
7587 struct btrfs_block_rsv *block_rsv; in btrfs_alloc_tree_block() local
7604 block_rsv = use_block_rsv(trans, root, blocksize); in btrfs_alloc_tree_block()
7605 if (IS_ERR(block_rsv)) in btrfs_alloc_tree_block()
7606 return ERR_CAST(block_rsv); in btrfs_alloc_tree_block()
7662 unuse_block_rsv(root->fs_info, block_rsv, blocksize); in btrfs_alloc_tree_block()
8401 struct btrfs_block_rsv *block_rsv, int update_ref, in btrfs_drop_snapshot() argument
8436 if (block_rsv) in btrfs_drop_snapshot()
8437 trans->block_rsv = block_rsv; in btrfs_drop_snapshot()
8572 if (block_rsv) in btrfs_drop_snapshot()
8573 trans->block_rsv = block_rsv; in btrfs_drop_snapshot()