Lines Matching defs:trans

18 static int split_node(struct btrfs_trans_handle *trans, struct btrfs_root
20 static int split_leaf(struct btrfs_trans_handle *trans, struct btrfs_root *root,
23 static int push_node_left(struct btrfs_trans_handle *trans,
26 static int balance_node_right(struct btrfs_trans_handle *trans,
178 int btrfs_copy_root(struct btrfs_trans_handle *trans,
190 trans->transid != fs_info->running_transaction->transid);
192 trans->transid != root->last_trans);
200 cow = btrfs_alloc_tree_block(trans, root, 0, new_root_objectid,
208 btrfs_set_header_generation(cow, trans->transid);
219 WARN_ON(btrfs_header_generation(buf) > trans->transid);
221 ret = btrfs_inc_ref(trans, root, cow, 1);
223 ret = btrfs_inc_ref(trans, root, cow, 0);
227 btrfs_abort_transaction(trans, ret);
848 static noinline int update_ref_for_cow(struct btrfs_trans_handle *trans,
879 ret = btrfs_lookup_extent_info(trans, fs_info, buf->start,
906 ret = btrfs_inc_ref(trans, root, buf, 1);
912 ret = btrfs_dec_ref(trans, root, buf, 0);
915 ret = btrfs_inc_ref(trans, root, cow, 1);
924 ret = btrfs_inc_ref(trans, root, cow, 1);
926 ret = btrfs_inc_ref(trans, root, cow, 0);
933 ret = btrfs_set_disk_extent_flags(trans, buf,
942 ret = btrfs_inc_ref(trans, root, cow, 1);
944 ret = btrfs_inc_ref(trans, root, cow, 0);
947 ret = btrfs_dec_ref(trans, root, buf, 1);
958 struct btrfs_trans_handle *trans,
990 trans->can_flush_pending_bgs = false;
992 ret = btrfs_alloc_tree_block(trans, root, parent_start,
995 trans->can_flush_pending_bgs = true;
1012 static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans,
1034 trans->transid != fs_info->running_transaction->transid);
1036 trans->transid != root->last_trans);
1048 cow = alloc_tree_block_no_bg_flush(trans, root, parent_start, &disk_key,
1057 btrfs_set_header_generation(cow, trans->transid);
1068 ret = update_ref_for_cow(trans, root, buf, cow, &last_ref);
1072 btrfs_abort_transaction(trans, ret);
1077 ret = btrfs_reloc_cow_block(trans, root, buf, cow);
1081 btrfs_abort_transaction(trans, ret);
1097 btrfs_free_tree_block(trans, root, buf, parent_start,
1102 WARN_ON(trans->transid != btrfs_header_generation(parent));
1108 trans->transid);
1115 btrfs_abort_transaction(trans, ret);
1119 btrfs_free_tree_block(trans, root, buf, parent_start,
1445 static inline int should_cow_block(struct btrfs_trans_handle *trans,
1466 if (btrfs_header_generation(buf) == trans->transid &&
1480 noinline int btrfs_cow_block(struct btrfs_trans_handle *trans,
1494 if (trans->transaction != fs_info->running_transaction)
1495 WARN(1, KERN_CRIT "trans %llu running %llu\n",
1496 trans->transid,
1499 if (trans->transid != fs_info->generation)
1500 WARN(1, KERN_CRIT "trans %llu running %llu\n",
1501 trans->transid, fs_info->generation);
1503 if (!should_cow_block(trans, root, buf)) {
1504 trans->dirty = true;
1521 btrfs_qgroup_trace_subtree_after_cow(trans, root, buf);
1522 ret = __btrfs_cow_block(trans, root, buf, parent,
1598 int btrfs_realloc_node(struct btrfs_trans_handle *trans,
1622 WARN_ON(trans->transaction != fs_info->running_transaction);
1623 WARN_ON(trans->transid != fs_info->generation);
1692 err = __btrfs_cow_block(trans, root, cur, parent, i,
1844 static noinline int balance_level(struct btrfs_trans_handle *trans,
1865 WARN_ON(btrfs_header_generation(mid) != trans->transid);
1894 ret = btrfs_cow_block(trans, root, child, mid, 0, &child,
1917 btrfs_free_tree_block(trans, root, mid, 0, 1);
1933 wret = btrfs_cow_block(trans, root, left,
1949 wret = btrfs_cow_block(trans, root, right,
1961 wret = push_node_left(trans, left, mid, 1);
1970 wret = push_node_left(trans, mid, right, 1);
1978 btrfs_free_tree_block(trans, root, right, 0, 1);
2006 wret = balance_node_right(trans, mid, left);
2012 wret = push_node_left(trans, left, mid, 1);
2023 btrfs_free_tree_block(trans, root, mid, 0, 1);
2075 static noinline int push_nodes_for_insert(struct btrfs_trans_handle *trans,
2093 WARN_ON(btrfs_header_generation(mid) != trans->transid);
2118 ret = btrfs_cow_block(trans, root, left, parent,
2124 wret = push_node_left(trans, left, mid, 0);
2173 ret = btrfs_cow_block(trans, root, right,
2179 wret = balance_node_right(trans, right, mid);
2490 setup_nodes_for_search(struct btrfs_trans_handle *trans,
2510 sret = split_node(trans, root, p, level);
2530 sret = balance_level(trans, root, p, level);
2686 * @trans: Handle of transaction, used when modifying the tree
2707 int btrfs_search_slot(struct btrfs_trans_handle *trans, struct btrfs_root *root,
2773 if (!should_cow_block(trans, root, b)) {
2774 trans->dirty = true;
2793 err = btrfs_cow_block(trans, root, b, NULL, 0,
2797 err = btrfs_cow_block(trans, root, b,
2862 err = split_leaf(trans, root, key,
2881 err = setup_nodes_for_search(trans, root, p, b, level, ins_len,
3279 static int push_node_left(struct btrfs_trans_handle *trans,
3283 struct btrfs_fs_info *fs_info = trans->fs_info;
3292 WARN_ON(btrfs_header_generation(src) != trans->transid);
3293 WARN_ON(btrfs_header_generation(dst) != trans->transid);
3319 btrfs_abort_transaction(trans, ret);
3324 btrfs_abort_transaction(trans, ret);
3359 static int balance_node_right(struct btrfs_trans_handle *trans,
3363 struct btrfs_fs_info *fs_info = trans->fs_info;
3370 WARN_ON(btrfs_header_generation(src) != trans->transid);
3371 WARN_ON(btrfs_header_generation(dst) != trans->transid);
3393 btrfs_abort_transaction(trans, ret);
3406 btrfs_abort_transaction(trans, ret);
3430 static noinline int insert_new_root(struct btrfs_trans_handle *trans,
3451 c = alloc_tree_block_no_bg_flush(trans, root, 0, &lower_key, level,
3463 WARN_ON(lower_gen != trans->transid);
3492 static void insert_ptr(struct btrfs_trans_handle *trans,
3506 BUG_ON(nritems == BTRFS_NODEPTRS_PER_BLOCK(trans->fs_info));
3525 WARN_ON(trans->transid == 0);
3526 btrfs_set_node_ptr_generation(lower, slot, trans->transid);
3540 static noinline int split_node(struct btrfs_trans_handle *trans,
3553 WARN_ON(btrfs_header_generation(c) != trans->transid);
3565 ret = insert_new_root(trans, root, path, level + 1);
3569 ret = push_nodes_for_insert(trans, root, path, level);
3582 split = alloc_tree_block_no_bg_flush(trans, root, 0, &disk_key, level,
3594 btrfs_abort_transaction(trans, ret);
3608 insert_ptr(trans, path, &disk_key, split->start,
3823 static int push_leaf_right(struct btrfs_trans_handle *trans, struct btrfs_root
3862 ret = btrfs_cow_block(trans, root, right, upper,
3877 btrfs_abort_transaction(trans, ret);
4063 static int push_leaf_left(struct btrfs_trans_handle *trans, struct btrfs_root
4104 ret = btrfs_cow_block(trans, root, left,
4122 btrfs_abort_transaction(trans, ret);
4138 static noinline void copy_for_split(struct btrfs_trans_handle *trans,
4144 struct btrfs_fs_info *fs_info = trans->fs_info;
4177 insert_ptr(trans, path, &disk_key, right->start, path->slots[1] + 1, 1);
4207 static noinline int push_for_double_split(struct btrfs_trans_handle *trans,
4226 ret = push_leaf_right(trans, root, path, 1, space_needed, 0, slot);
4249 ret = push_leaf_left(trans, root, path, 1, space_needed, 0, slot);
4267 static noinline int split_leaf(struct btrfs_trans_handle *trans,
4299 wret = push_leaf_right(trans, root, path, space_needed,
4307 wret = push_leaf_left(trans, root, path, space_needed,
4320 ret = insert_new_root(trans, root, path, 1);
4381 right = alloc_tree_block_no_bg_flush(trans, root, 0, &disk_key, 0,
4393 insert_ptr(trans, path, &disk_key,
4402 insert_ptr(trans, path, &disk_key,
4419 copy_for_split(trans, path, l, right, slot, mid, nritems);
4430 push_for_double_split(trans, root, path, data_size);
4437 static noinline int setup_leaf_for_split(struct btrfs_trans_handle *trans,
4467 ret = btrfs_search_slot(trans, root, &key, path, 0, 1);
4492 ret = split_leaf(trans, root, &key, path, ins_len, 1);
4588 int btrfs_split_item(struct btrfs_trans_handle *trans,
4595 ret = setup_leaf_for_split(trans, root, path,
4612 int btrfs_duplicate_item(struct btrfs_trans_handle *trans,
4623 ret = setup_leaf_for_split(trans, root, path,
4910 int btrfs_insert_empty_items(struct btrfs_trans_handle *trans,
4926 ret = btrfs_search_slot(trans, root, cpu_key, path, total_size, 1);
4943 int btrfs_insert_item(struct btrfs_trans_handle *trans, struct btrfs_root *root,
4955 ret = btrfs_insert_empty_item(trans, root, path, cpu_key, data_size);
5022 static noinline void btrfs_del_leaf(struct btrfs_trans_handle *trans,
5027 WARN_ON(btrfs_header_generation(leaf) != trans->transid);
5039 btrfs_free_tree_block(trans, root, leaf, 0, 1);
5046 int btrfs_del_items(struct btrfs_trans_handle *trans, struct btrfs_root *root,
5100 btrfs_del_leaf(trans, root, path, leaf);
5121 wret = push_leaf_left(trans, root, path, 1, 1,
5128 wret = push_leaf_right(trans, root, path, 1,
5136 btrfs_del_leaf(trans, root, path, leaf);