Lines Matching defs:root

30 #include "root-tree.h"
911 struct btrfs_root *root)
928 ret = btrfs_search_slot(trans, root, &key, path, -1, 1);
941 ret = btrfs_del_items(trans, root, path, 0, nr);
1002 * check if someone else created the quota root in the meanwhile. If so,
1012 * 1 for quota root item
1244 * root while we are deleting the root. This is like dropping fs roots
1274 * 1 For the root item
1970 * incremented. The root node will never be freed.
1977 * If we increment the root nodes slot counter past the number of
1996 * Don't free the root - we will detect this
2828 /* Search commit root to find old_roots */
2839 * current root. It's safe inside commit_transaction().
2889 * disable operation (ioctl) and access a freed quota root.
3045 * We call inherit after we clone the root in order to make sure
3047 * difference between the two roots should be the root node.
3154 static int qgroup_reserve(struct btrfs_root *root, u64 num_bytes, bool enforce,
3158 struct btrfs_fs_info *fs_info = root->fs_info;
3159 u64 ref_root = root->root_key.objectid;
3410 * Rescan should only search for commit root, and any later difference
3677 node = reserved->range_changed.root.rb_node;
3735 * possible, so we need to flush the whole root.
3747 static int try_flush_qgroup(struct btrfs_root *root)
3761 if (test_and_set_bit(BTRFS_ROOT_QGROUP_FLUSHING, &root->state)) {
3762 wait_event(root->qgroup_flush_wait,
3763 !test_bit(BTRFS_ROOT_QGROUP_FLUSHING, &root->state));
3767 ret = btrfs_start_delalloc_snapshot(root, true);
3770 btrfs_wait_ordered_extents(root, U64_MAX, 0, (u64)-1);
3772 trans = btrfs_attach_transaction_barrier(root);
3782 clear_bit(BTRFS_ROOT_QGROUP_FLUSHING, &root->state);
3783 wake_up(&root->qgroup_flush_wait);
3791 struct btrfs_root *root = inode->root;
3798 if (!test_bit(BTRFS_FS_QUOTA_ENABLED, &root->fs_info->flags) ||
3799 !is_fstree(root->root_key.objectid) || len == 0)
3823 ret = qgroup_reserve(root, to_reserve, true, BTRFS_QGROUP_RSV_DATA);
3861 ret = try_flush_qgroup(inode->root);
3872 struct btrfs_root *root = inode->root;
3880 len = round_up(start + len, root->fs_info->sectorsize);
3881 start = round_down(start, root->fs_info->sectorsize);
3915 btrfs_qgroup_free_refroot(root->fs_info, root->root_key.objectid, freed,
3933 if (!test_bit(BTRFS_FS_QUOTA_ENABLED, &inode->root->fs_info->flags))
3951 btrfs_qgroup_free_refroot(inode->root->fs_info,
3952 inode->root->root_key.objectid,
3984 * FILE_EXTENT is inserted into corresponding root.
4000 static void add_root_meta_rsv(struct btrfs_root *root, int num_bytes,
4009 spin_lock(&root->qgroup_meta_rsv_lock);
4011 root->qgroup_meta_rsv_prealloc += num_bytes;
4013 root->qgroup_meta_rsv_pertrans += num_bytes;
4014 spin_unlock(&root->qgroup_meta_rsv_lock);
4017 static int sub_root_meta_rsv(struct btrfs_root *root, int num_bytes,
4026 spin_lock(&root->qgroup_meta_rsv_lock);
4028 num_bytes = min_t(u64, root->qgroup_meta_rsv_prealloc,
4030 root->qgroup_meta_rsv_prealloc -= num_bytes;
4032 num_bytes = min_t(u64, root->qgroup_meta_rsv_pertrans,
4034 root->qgroup_meta_rsv_pertrans -= num_bytes;
4036 spin_unlock(&root->qgroup_meta_rsv_lock);
4040 int btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes,
4043 struct btrfs_fs_info *fs_info = root->fs_info;
4047 !is_fstree(root->root_key.objectid) || num_bytes == 0)
4051 trace_qgroup_meta_reserve(root, (s64)num_bytes, type);
4052 ret = qgroup_reserve(root, num_bytes, enforce, type);
4056 * Record what we have reserved into root.
4060 * (since quota was disabled), so record what we reserved into root.
4063 add_root_meta_rsv(root, num_bytes, type);
4067 int __btrfs_qgroup_reserve_meta(struct btrfs_root *root, int num_bytes,
4073 ret = btrfs_qgroup_reserve_meta(root, num_bytes, type, enforce);
4077 ret = try_flush_qgroup(root);
4080 return btrfs_qgroup_reserve_meta(root, num_bytes, type, enforce);
4083 void btrfs_qgroup_free_meta_all_pertrans(struct btrfs_root *root)
4085 struct btrfs_fs_info *fs_info = root->fs_info;
4088 !is_fstree(root->root_key.objectid))
4092 trace_qgroup_meta_free_all_pertrans(root);
4094 btrfs_qgroup_free_refroot(fs_info, root->root_key.objectid, (u64)-1,
4098 void __btrfs_qgroup_free_meta(struct btrfs_root *root, int num_bytes,
4101 struct btrfs_fs_info *fs_info = root->fs_info;
4104 !is_fstree(root->root_key.objectid))
4112 num_bytes = sub_root_meta_rsv(root, num_bytes, type);
4114 trace_qgroup_meta_reserve(root, -(s64)num_bytes, type);
4115 btrfs_qgroup_free_refroot(fs_info, root->root_key.objectid,
4153 void btrfs_qgroup_convert_reserved_meta(struct btrfs_root *root, int num_bytes)
4155 struct btrfs_fs_info *fs_info = root->fs_info;
4158 !is_fstree(root->root_key.objectid))
4161 num_bytes = sub_root_meta_rsv(root, num_bytes,
4163 trace_qgroup_meta_convert(root, num_bytes);
4164 qgroup_convert_meta(fs_info, root->root_key.objectid, num_bytes);
4186 btrfs_warn(inode->root->fs_info,
4190 btrfs_qgroup_free_refroot(inode->root->fs_info,
4191 inode->root->root_key.objectid,
4210 * Delete all swapped blocks record of @root.
4215 void btrfs_qgroup_clean_swapped_blocks(struct btrfs_root *root)
4220 swapped_blocks = &root->swapped_blocks;
4243 * @subvol_root: tree root of the subvolume tree get swapped
4245 * @subvol_parent/slot: pointer to the subtree root in subvolume tree
4246 * @reloc_parent/slot: pointer to the subtree root in reloc tree
4354 * Check if the tree block is a subtree root, and if so do the needed
4360 struct btrfs_root *root,
4363 struct btrfs_fs_info *fs_info = root->fs_info;
4365 struct btrfs_qgroup_swapped_blocks *blocks = &root->swapped_blocks;
4377 if (!is_fstree(root->root_key.objectid) || !root->reloc_root)
4418 /* Read out reloc subtree root */
4449 struct rb_root *root;
4451 root = &trans->delayed_refs.dirty_extent_root;
4452 rbtree_postorder_for_each_entry_safe(entry, next, root, node) {
4456 *root = RB_ROOT;