Lines Matching refs:inode
25 * space_info->bytes_may_use. We set EXTENT_DELALLOC on the inode io_tree
60 * We keep track of two things on a per inode bases
64 * outstanding DELALLOC space we have in this inode. We limit the maximum
70 * This is essentially how many dirty bytes we have for this inode, so we
74 * We keep a per-inode block_rsv in order to make it easier to keep track of
77 * metadata for this inode. We call this and then adjust our reservation as
84 * need to use for this inode, and it will fluctuate depending on where you are
86 * a completely clean inode, with a num_bytes < our maximum allowed extent size
114 int btrfs_alloc_data_chunk_ondemand(struct btrfs_inode *inode, u64 bytes)
116 struct btrfs_root *root = inode->root;
123 if (btrfs_is_free_space_inode(inode))
129 int btrfs_check_data_free_space(struct btrfs_inode *inode,
132 struct btrfs_fs_info *fs_info = inode->root->fs_info;
140 ret = btrfs_alloc_data_chunk_ondemand(inode, len);
145 ret = btrfs_qgroup_reserve_data(inode, reserved, start, len);
154 * Called if we need to clear a data reservation for this inode
173 * Called if we need to clear a data reservation for this inode
176 * This one will handle the per-inode data rsv map for accurate reserved
179 void btrfs_free_reserved_data_space(struct btrfs_inode *inode,
182 struct btrfs_fs_info *fs_info = inode->root->fs_info;
190 btrfs_qgroup_free_data(inode, reserved, start, len);
195 * @inode - the inode we need to release from.
204 static void btrfs_inode_rsv_release(struct btrfs_inode *inode, bool qgroup_free)
206 struct btrfs_fs_info *fs_info = inode->root->fs_info;
207 struct btrfs_block_rsv *block_rsv = &inode->block_rsv;
220 btrfs_ino(inode), released, 0);
222 btrfs_qgroup_free_meta_prealloc(inode->root, qgroup_to_release);
224 btrfs_qgroup_convert_reserved_meta(inode->root,
229 struct btrfs_inode *inode)
231 struct btrfs_block_rsv *block_rsv = &inode->block_rsv;
237 lockdep_assert_held(&inode->lock);
238 outstanding_extents = inode->outstanding_extents;
242 * updating the inode.
250 inode->csum_bytes);
279 * finish_ordered_io has to update the inode, so add the space required
280 * for an inode update.
286 int btrfs_delalloc_reserve_metadata(struct btrfs_inode *inode, u64 num_bytes)
288 struct btrfs_root *root = inode->root;
290 struct btrfs_block_rsv *block_rsv = &inode->block_rsv;
297 * If we are a free space inode we need to not flush since we will be in
305 if (btrfs_is_free_space_inode(inode)) {
341 spin_lock(&inode->lock);
343 btrfs_mod_outstanding_extents(inode, nr_extents);
344 inode->csum_bytes += num_bytes;
345 btrfs_calculate_inode_block_rsv_size(fs_info, inode);
346 spin_unlock(&inode->lock);
351 btrfs_ino(inode), meta_reserve, 1);
361 * btrfs_delalloc_release_metadata - release a metadata reservation for an inode
362 * @inode: the inode to release the reservation for.
366 * This will release the metadata reservation for an inode. This can be called
370 void btrfs_delalloc_release_metadata(struct btrfs_inode *inode, u64 num_bytes,
373 struct btrfs_fs_info *fs_info = inode->root->fs_info;
376 spin_lock(&inode->lock);
377 inode->csum_bytes -= num_bytes;
378 btrfs_calculate_inode_block_rsv_size(fs_info, inode);
379 spin_unlock(&inode->lock);
384 btrfs_inode_rsv_release(inode, qgroup_free);
389 * @inode: the inode to balance the reservation for.
398 void btrfs_delalloc_release_extents(struct btrfs_inode *inode, u64 num_bytes)
400 struct btrfs_fs_info *fs_info = inode->root->fs_info;
403 spin_lock(&inode->lock);
405 btrfs_mod_outstanding_extents(inode, -num_extents);
406 btrfs_calculate_inode_block_rsv_size(fs_info, inode);
407 spin_unlock(&inode->lock);
412 btrfs_inode_rsv_release(inode, true);
418 * @inode: inode we're writing to
440 int btrfs_delalloc_reserve_space(struct btrfs_inode *inode,
445 ret = btrfs_check_data_free_space(inode, reserved, start, len);
448 ret = btrfs_delalloc_reserve_metadata(inode, len);
450 btrfs_free_reserved_data_space(inode, *reserved, start, len);
456 * @inode: inode we're releasing space for
466 void btrfs_delalloc_release_space(struct btrfs_inode *inode,
470 btrfs_delalloc_release_metadata(inode, len, qgroup_free);
471 btrfs_free_reserved_data_space(inode, reserved, start, len);