Lines Matching defs:trans

29 static int split_node(struct btrfs_trans_handle *trans, struct btrfs_root
31 static int split_leaf(struct btrfs_trans_handle *trans, struct btrfs_root *root,
34 static int push_node_left(struct btrfs_trans_handle *trans,
37 static int balance_node_right(struct btrfs_trans_handle *trans,
309 int btrfs_copy_root(struct btrfs_trans_handle *trans,
321 trans->transid != fs_info->running_transaction->transid);
323 trans->transid != root->last_trans);
331 cow = btrfs_alloc_tree_block(trans, root, 0, new_root_objectid,
339 btrfs_set_header_generation(cow, trans->transid);
350 WARN_ON(btrfs_header_generation(buf) > trans->transid);
352 ret = btrfs_inc_ref(trans, root, cow, 1);
354 ret = btrfs_inc_ref(trans, root, cow, 0);
358 btrfs_abort_transaction(trans, ret);
362 btrfs_mark_buffer_dirty(trans, cow);
370 int btrfs_block_can_be_shared(struct btrfs_trans_handle *trans,
392 if (btrfs_header_generation(buf) == trans->transid)
399 static noinline int update_ref_for_cow(struct btrfs_trans_handle *trans,
429 if (btrfs_block_can_be_shared(trans, root, buf)) {
430 ret = btrfs_lookup_extent_info(trans, fs_info, buf->start,
441 btrfs_abort_transaction(trans, ret);
461 ret = btrfs_inc_ref(trans, root, buf, 1);
467 ret = btrfs_dec_ref(trans, root, buf, 0);
470 ret = btrfs_inc_ref(trans, root, cow, 1);
479 ret = btrfs_inc_ref(trans, root, cow, 1);
481 ret = btrfs_inc_ref(trans, root, cow, 0);
486 ret = btrfs_set_disk_extent_flags(trans, buf, new_flags);
494 ret = btrfs_inc_ref(trans, root, cow, 1);
496 ret = btrfs_inc_ref(trans, root, cow, 0);
499 ret = btrfs_dec_ref(trans, root, buf, 1);
503 btrfs_clear_buffer_dirty(trans, buf);
521 static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans,
543 trans->transid != fs_info->running_transaction->transid);
545 trans->transid != root->last_trans);
557 cow = btrfs_alloc_tree_block(trans, root, parent_start,
567 btrfs_set_header_generation(cow, trans->transid);
578 ret = update_ref_for_cow(trans, root, buf, cow, &last_ref);
582 btrfs_abort_transaction(trans, ret);
587 ret = btrfs_reloc_cow_block(trans, root, buf, cow);
591 btrfs_abort_transaction(trans, ret);
606 btrfs_abort_transaction(trans, ret);
612 btrfs_free_tree_block(trans, btrfs_root_id(root), buf,
617 WARN_ON(trans->transid != btrfs_header_generation(parent));
623 btrfs_abort_transaction(trans, ret);
629 trans->transid);
630 btrfs_mark_buffer_dirty(trans, parent);
636 btrfs_abort_transaction(trans, ret);
640 btrfs_free_tree_block(trans, btrfs_root_id(root), buf,
646 btrfs_mark_buffer_dirty(trans, cow);
651 static inline int should_cow_block(struct btrfs_trans_handle *trans,
672 if (btrfs_header_generation(buf) == trans->transid &&
686 noinline int btrfs_cow_block(struct btrfs_trans_handle *trans,
697 btrfs_abort_transaction(trans, -EUCLEAN);
710 if (unlikely(trans->transaction != fs_info->running_transaction ||
711 trans->transid != fs_info->generation)) {
712 btrfs_abort_transaction(trans, -EUCLEAN);
715 buf->start, btrfs_root_id(root), trans->transid,
721 if (!should_cow_block(trans, root, buf)) {
734 btrfs_qgroup_trace_subtree_after_cow(trans, root, buf);
735 ret = __btrfs_cow_block(trans, root, buf, parent,
812 int btrfs_realloc_node(struct btrfs_trans_handle *trans,
837 if (unlikely(trans->transaction != fs_info->running_transaction ||
838 trans->transid != fs_info->generation)) {
839 btrfs_abort_transaction(trans, -EUCLEAN);
842 parent->start, btrfs_root_id(root), trans->transid,
887 err = __btrfs_cow_block(trans, root, cur, parent, i,
1041 static noinline int balance_level(struct btrfs_trans_handle *trans,
1061 WARN_ON(btrfs_header_generation(mid) != trans->transid);
1088 ret = btrfs_cow_block(trans, root, child, mid, 0, &child,
1100 btrfs_abort_transaction(trans, ret);
1110 btrfs_clear_buffer_dirty(trans, mid);
1116 btrfs_free_tree_block(trans, btrfs_root_id(root), mid, 0, 1);
1134 wret = btrfs_cow_block(trans, root, left,
1152 wret = btrfs_cow_block(trans, root, right,
1164 wret = push_node_left(trans, left, mid, 1);
1173 wret = push_node_left(trans, mid, right, 1);
1177 btrfs_clear_buffer_dirty(trans, right);
1179 ret = btrfs_del_ptr(trans, root, path, level + 1, pslot + 1);
1186 btrfs_free_tree_block(trans, btrfs_root_id(root), right,
1196 btrfs_abort_transaction(trans, ret);
1200 btrfs_mark_buffer_dirty(trans, parent);
1219 btrfs_abort_transaction(trans, ret);
1222 wret = balance_node_right(trans, mid, left);
1228 wret = push_node_left(trans, left, mid, 1);
1235 btrfs_clear_buffer_dirty(trans, mid);
1237 ret = btrfs_del_ptr(trans, root, path, level + 1, pslot);
1244 btrfs_free_tree_block(trans, btrfs_root_id(root), mid, 0, 1);
1254 btrfs_abort_transaction(trans, ret);
1258 btrfs_mark_buffer_dirty(trans, parent);
1299 static noinline int push_nodes_for_insert(struct btrfs_trans_handle *trans,
1317 WARN_ON(btrfs_header_generation(mid) != trans->transid);
1341 ret = btrfs_cow_block(trans, root, left, parent,
1347 wret = push_node_left(trans, left, mid, 0);
1361 btrfs_abort_transaction(trans, ret);
1365 btrfs_mark_buffer_dirty(trans, parent);
1401 ret = btrfs_cow_block(trans, root, right,
1407 wret = balance_node_right(trans, right, mid);
1421 btrfs_abort_transaction(trans, ret);
1425 btrfs_mark_buffer_dirty(trans, parent);
1745 setup_nodes_for_search(struct btrfs_trans_handle *trans,
1763 ret = split_node(trans, root, p, level);
1776 ret = balance_level(trans, root, p, level);
1965 static int search_leaf(struct btrfs_trans_handle *trans,
2080 err = split_leaf(trans, root, key, path, ins_len,
2097 * @trans: Handle of transaction, used when modifying the tree
2124 int btrfs_search_slot(struct btrfs_trans_handle *trans, struct btrfs_root *root,
2210 if (!should_cow_block(trans, root, b))
2227 err = btrfs_cow_block(trans, root, b, NULL, 0,
2231 err = btrfs_cow_block(trans, root, b,
2267 ret = search_leaf(trans, root, key, p, ins_len, prev_cmp);
2284 err = setup_nodes_for_search(trans, root, p, b, level, ins_len,
2681 static void fixup_low_keys(struct btrfs_trans_handle *trans,
2699 btrfs_mark_buffer_dirty(trans, path->nodes[i]);
2711 void btrfs_set_item_key_safe(struct btrfs_trans_handle *trans,
2715 struct btrfs_fs_info *fs_info = trans->fs_info;
2753 btrfs_mark_buffer_dirty(trans, eb);
2755 fixup_low_keys(trans, path, &disk_key, 1);
2821 static int push_node_left(struct btrfs_trans_handle *trans,
2825 struct btrfs_fs_info *fs_info = trans->fs_info;
2834 WARN_ON(btrfs_header_generation(src) != trans->transid);
2835 WARN_ON(btrfs_header_generation(dst) != trans->transid);
2861 btrfs_abort_transaction(trans, ret);
2866 btrfs_abort_transaction(trans, ret);
2886 btrfs_mark_buffer_dirty(trans, src);
2887 btrfs_mark_buffer_dirty(trans, dst);
2901 static int balance_node_right(struct btrfs_trans_handle *trans,
2905 struct btrfs_fs_info *fs_info = trans->fs_info;
2912 WARN_ON(btrfs_header_generation(src) != trans->transid);
2913 WARN_ON(btrfs_header_generation(dst) != trans->transid);
2935 btrfs_abort_transaction(trans, ret);
2951 btrfs_abort_transaction(trans, ret);
2962 btrfs_mark_buffer_dirty(trans, src);
2963 btrfs_mark_buffer_dirty(trans, dst);
2975 static noinline int insert_new_root(struct btrfs_trans_handle *trans,
2996 c = btrfs_alloc_tree_block(trans, root, 0, root->root_key.objectid,
3008 WARN_ON(lower_gen != trans->transid);
3012 btrfs_mark_buffer_dirty(trans, c);
3017 btrfs_free_tree_block(trans, btrfs_root_id(root), c, 0, 1);
3042 static int insert_ptr(struct btrfs_trans_handle *trans,
3056 BUG_ON(nritems == BTRFS_NODEPTRS_PER_BLOCK(trans->fs_info));
3062 btrfs_abort_transaction(trans, ret);
3075 btrfs_abort_transaction(trans, ret);
3081 WARN_ON(trans->transid == 0);
3082 btrfs_set_node_ptr_generation(lower, slot, trans->transid);
3084 btrfs_mark_buffer_dirty(trans, lower);
3098 static noinline int split_node(struct btrfs_trans_handle *trans,
3111 WARN_ON(btrfs_header_generation(c) != trans->transid);
3123 ret = insert_new_root(trans, root, path, level + 1);
3127 ret = push_nodes_for_insert(trans, root, path, level);
3140 split = btrfs_alloc_tree_block(trans, root, 0, root->root_key.objectid,
3153 btrfs_abort_transaction(trans, ret);
3163 btrfs_mark_buffer_dirty(trans, c);
3164 btrfs_mark_buffer_dirty(trans, split);
3166 ret = insert_ptr(trans, path, &disk_key, split->start,
3233 static noinline int __push_leaf_right(struct btrfs_trans_handle *trans,
3330 btrfs_mark_buffer_dirty(trans, left);
3332 btrfs_clear_buffer_dirty(trans, left);
3334 btrfs_mark_buffer_dirty(trans, right);
3338 btrfs_mark_buffer_dirty(trans, upper);
3344 btrfs_clear_buffer_dirty(trans, path->nodes[0]);
3371 static int push_leaf_right(struct btrfs_trans_handle *trans, struct btrfs_root
3404 ret = btrfs_cow_block(trans, root, right, upper,
3415 btrfs_abort_transaction(trans, ret);
3433 return __push_leaf_right(trans, path, min_data_size, empty, right,
3449 static noinline int __push_leaf_left(struct btrfs_trans_handle *trans,
3550 btrfs_mark_buffer_dirty(trans, left);
3552 btrfs_mark_buffer_dirty(trans, right);
3554 btrfs_clear_buffer_dirty(trans, right);
3557 fixup_low_keys(trans, path, &disk_key, 1);
3587 static int push_leaf_left(struct btrfs_trans_handle *trans, struct btrfs_root
3622 ret = btrfs_cow_block(trans, root, left,
3634 btrfs_abort_transaction(trans, ret);
3637 return __push_leaf_left(trans, path, min_data_size, empty, left,
3649 static noinline int copy_for_split(struct btrfs_trans_handle *trans,
3655 struct btrfs_fs_info *fs_info = trans->fs_info;
3684 ret = insert_ptr(trans, path, &disk_key, right->start, path->slots[1] + 1, 1);
3688 btrfs_mark_buffer_dirty(trans, right);
3689 btrfs_mark_buffer_dirty(trans, l);
3718 static noinline int push_for_double_split(struct btrfs_trans_handle *trans,
3737 ret = push_leaf_right(trans, root, path, 1, space_needed, 0, slot);
3760 ret = push_leaf_left(trans, root, path, 1, space_needed, 0, slot);
3778 static noinline int split_leaf(struct btrfs_trans_handle *trans,
3810 wret = push_leaf_right(trans, root, path, space_needed,
3818 wret = push_leaf_left(trans, root, path, space_needed,
3831 ret = insert_new_root(trans, root, path, 1);
3892 right = btrfs_alloc_tree_block(trans, root, 0, root->root_key.objectid,
3904 ret = insert_ptr(trans, path, &disk_key,
3918 ret = insert_ptr(trans, path, &disk_key,
3930 fixup_low_keys(trans, path, &disk_key, 1);
3940 ret = copy_for_split(trans, path, l, right, slot, mid, nritems);
3956 push_for_double_split(trans, root, path, data_size);
3963 static noinline int setup_leaf_for_split(struct btrfs_trans_handle *trans,
3993 ret = btrfs_search_slot(trans, root, &key, path, 0, 1);
4017 ret = split_leaf(trans, root, &key, path, ins_len, 1);
4029 static noinline int split_item(struct btrfs_trans_handle *trans,
4089 btrfs_mark_buffer_dirty(trans, leaf);
4111 int btrfs_split_item(struct btrfs_trans_handle *trans,
4118 ret = setup_leaf_for_split(trans, root, path,
4123 ret = split_item(trans, path, new_key, split_offset);
4133 void btrfs_truncate_item(struct btrfs_trans_handle *trans,
4210 fixup_low_keys(trans, path, &disk_key, 1);
4214 btrfs_mark_buffer_dirty(trans, leaf);
4225 void btrfs_extend_item(struct btrfs_trans_handle *trans,
4276 btrfs_mark_buffer_dirty(trans, leaf);
4287 * @trans: transaction handle
4295 static void setup_items_for_insert(struct btrfs_trans_handle *trans,
4316 fixup_low_keys(trans, path, &disk_key, 1);
4375 btrfs_mark_buffer_dirty(trans, leaf);
4386 * @trans: Transaction handle.
4392 void btrfs_setup_item_for_insert(struct btrfs_trans_handle *trans,
4405 setup_items_for_insert(trans, root, path, &batch);
4412 int btrfs_insert_empty_items(struct btrfs_trans_handle *trans,
4422 ret = btrfs_search_slot(trans, root, &batch->keys[0], path, total_size, 1);
4431 setup_items_for_insert(trans, root, path, batch);
4439 int btrfs_insert_item(struct btrfs_trans_handle *trans, struct btrfs_root *root,
4451 ret = btrfs_insert_empty_item(trans, root, path, cpu_key, data_size);
4456 btrfs_mark_buffer_dirty(trans, leaf);
4470 int btrfs_duplicate_item(struct btrfs_trans_handle *trans,
4481 ret = setup_leaf_for_split(trans, root, path,
4487 btrfs_setup_item_for_insert(trans, root, path, new_key, item_size);
4504 int btrfs_del_ptr(struct btrfs_trans_handle *trans, struct btrfs_root *root,
4517 btrfs_abort_transaction(trans, ret);
4530 btrfs_abort_transaction(trans, ret);
4545 fixup_low_keys(trans, path, &disk_key, level + 1);
4547 btrfs_mark_buffer_dirty(trans, parent);
4561 static noinline int btrfs_del_leaf(struct btrfs_trans_handle *trans,
4568 WARN_ON(btrfs_header_generation(leaf) != trans->transid);
4569 ret = btrfs_del_ptr(trans, root, path, 1, path->slots[1]);
4582 btrfs_free_tree_block(trans, btrfs_root_id(root), leaf, 0, 1);
4590 int btrfs_del_items(struct btrfs_trans_handle *trans, struct btrfs_root *root,
4633 btrfs_clear_buffer_dirty(trans, leaf);
4634 ret = btrfs_del_leaf(trans, root, path, leaf);
4644 fixup_low_keys(trans, path, &disk_key, 1);
4670 wret = push_leaf_left(trans, root, path, 0,
4689 wret = push_leaf_right(trans, root, path, 0,
4697 ret = btrfs_del_leaf(trans, root, path, leaf);
4709 btrfs_mark_buffer_dirty(trans, leaf);
4713 btrfs_mark_buffer_dirty(trans, leaf);