Lines Matching refs:trans

28 static int split_node(struct btrfs_trans_handle *trans, struct btrfs_root
30 static int split_leaf(struct btrfs_trans_handle *trans, struct btrfs_root
33 static int push_node_left(struct btrfs_trans_handle *trans,
36 static int balance_node_right(struct btrfs_trans_handle *trans,
238 int btrfs_copy_root(struct btrfs_trans_handle *trans, in btrfs_copy_root() argument
249 trans->transid != root->fs_info->running_transaction->transid); in btrfs_copy_root()
251 trans->transid != root->last_trans); in btrfs_copy_root()
259 cow = btrfs_alloc_tree_block(trans, root, 0, new_root_objectid, in btrfs_copy_root()
266 btrfs_set_header_generation(cow, trans->transid); in btrfs_copy_root()
278 WARN_ON(btrfs_header_generation(buf) > trans->transid); in btrfs_copy_root()
280 ret = btrfs_inc_ref(trans, root, cow, 1); in btrfs_copy_root()
282 ret = btrfs_inc_ref(trans, root, cow, 0); in btrfs_copy_root()
977 static noinline int update_ref_for_cow(struct btrfs_trans_handle *trans, in update_ref_for_cow() argument
1007 ret = btrfs_lookup_extent_info(trans, root, buf->start, in update_ref_for_cow()
1034 ret = btrfs_inc_ref(trans, root, buf, 1); in update_ref_for_cow()
1039 ret = btrfs_dec_ref(trans, root, buf, 0); in update_ref_for_cow()
1041 ret = btrfs_inc_ref(trans, root, cow, 1); in update_ref_for_cow()
1049 ret = btrfs_inc_ref(trans, root, cow, 1); in update_ref_for_cow()
1051 ret = btrfs_inc_ref(trans, root, cow, 0); in update_ref_for_cow()
1057 ret = btrfs_set_disk_extent_flags(trans, root, in update_ref_for_cow()
1068 ret = btrfs_inc_ref(trans, root, cow, 1); in update_ref_for_cow()
1070 ret = btrfs_inc_ref(trans, root, cow, 0); in update_ref_for_cow()
1072 ret = btrfs_dec_ref(trans, root, buf, 1); in update_ref_for_cow()
1075 clean_tree_block(trans, root->fs_info, buf); in update_ref_for_cow()
1093 static noinline int __btrfs_cow_block(struct btrfs_trans_handle *trans, in __btrfs_cow_block() argument
1113 trans->transid != root->fs_info->running_transaction->transid); in __btrfs_cow_block()
1115 trans->transid != root->last_trans); in __btrfs_cow_block()
1132 cow = btrfs_alloc_tree_block(trans, root, parent_start, in __btrfs_cow_block()
1142 btrfs_set_header_generation(cow, trans->transid); in __btrfs_cow_block()
1154 ret = update_ref_for_cow(trans, root, buf, cow, &last_ref); in __btrfs_cow_block()
1156 btrfs_abort_transaction(trans, root, ret); in __btrfs_cow_block()
1161 ret = btrfs_reloc_cow_block(trans, root, buf, cow); in __btrfs_cow_block()
1178 btrfs_free_tree_block(trans, root, buf, parent_start, in __btrfs_cow_block()
1188 WARN_ON(trans->transid != btrfs_header_generation(parent)); in __btrfs_cow_block()
1194 trans->transid); in __btrfs_cow_block()
1199 btrfs_abort_transaction(trans, root, ret); in __btrfs_cow_block()
1203 btrfs_free_tree_block(trans, root, buf, parent_start, in __btrfs_cow_block()
1498 static inline int should_cow_block(struct btrfs_trans_handle *trans, in should_cow_block() argument
1519 if (btrfs_header_generation(buf) == trans->transid && in should_cow_block()
1533 noinline int btrfs_cow_block(struct btrfs_trans_handle *trans, in btrfs_cow_block() argument
1541 if (trans->transaction != root->fs_info->running_transaction) in btrfs_cow_block()
1543 trans->transid, in btrfs_cow_block()
1546 if (trans->transid != root->fs_info->generation) in btrfs_cow_block()
1548 trans->transid, root->fs_info->generation); in btrfs_cow_block()
1550 if (!should_cow_block(trans, root, buf)) { in btrfs_cow_block()
1561 ret = __btrfs_cow_block(trans, root, buf, parent, in btrfs_cow_block()
1619 int btrfs_realloc_node(struct btrfs_trans_handle *trans, in btrfs_realloc_node() argument
1642 WARN_ON(trans->transaction != root->fs_info->running_transaction); in btrfs_realloc_node()
1643 WARN_ON(trans->transid != root->fs_info->generation); in btrfs_realloc_node()
1705 err = __btrfs_cow_block(trans, root, cur, parent, i, in btrfs_realloc_node()
1880 static noinline int balance_level(struct btrfs_trans_handle *trans, in balance_level() argument
1901 WARN_ON(btrfs_header_generation(mid) != trans->transid); in balance_level()
1930 ret = btrfs_cow_block(trans, root, child, mid, 0, &child); in balance_level()
1945 clean_tree_block(trans, root->fs_info, mid); in balance_level()
1951 btrfs_free_tree_block(trans, root, mid, 0, 1); in balance_level()
1964 wret = btrfs_cow_block(trans, root, left, in balance_level()
1975 wret = btrfs_cow_block(trans, root, right, in balance_level()
1986 wret = push_node_left(trans, root, left, mid, 1); in balance_level()
1995 wret = push_node_left(trans, root, mid, right, 1); in balance_level()
1999 clean_tree_block(trans, root->fs_info, right); in balance_level()
2003 btrfs_free_tree_block(trans, root, right, 0, 1); in balance_level()
2030 wret = balance_node_right(trans, root, mid, left); in balance_level()
2036 wret = push_node_left(trans, root, left, mid, 1); in balance_level()
2043 clean_tree_block(trans, root->fs_info, mid); in balance_level()
2047 btrfs_free_tree_block(trans, root, mid, 0, 1); in balance_level()
2098 static noinline int push_nodes_for_insert(struct btrfs_trans_handle *trans, in push_nodes_for_insert() argument
2115 WARN_ON(btrfs_header_generation(mid) != trans->transid); in push_nodes_for_insert()
2138 ret = btrfs_cow_block(trans, root, left, parent, in push_nodes_for_insert()
2143 wret = push_node_left(trans, root, in push_nodes_for_insert()
2190 ret = btrfs_cow_block(trans, root, right, in push_nodes_for_insert()
2196 wret = balance_node_right(trans, root, in push_nodes_for_insert()
2438 read_block_for_search(struct btrfs_trans_handle *trans, in read_block_for_search() argument
2521 setup_nodes_for_search(struct btrfs_trans_handle *trans, in setup_nodes_for_search() argument
2539 sret = split_node(trans, root, p, level); in setup_nodes_for_search()
2560 sret = balance_level(trans, root, p, level); in setup_nodes_for_search()
2664 int btrfs_search_slot(struct btrfs_trans_handle *trans, struct btrfs_root in btrfs_search_slot() argument
2770 if (!should_cow_block(trans, root, b)) in btrfs_search_slot()
2787 err = btrfs_cow_block(trans, root, b, in btrfs_search_slot()
2828 err = setup_nodes_for_search(trans, root, p, b, level, in btrfs_search_slot()
2861 err = read_block_for_search(trans, root, p, in btrfs_search_slot()
2904 err = split_leaf(trans, root, key, in btrfs_search_slot()
3187 static int push_node_left(struct btrfs_trans_handle *trans, in push_node_left() argument
3199 WARN_ON(btrfs_header_generation(src) != trans->transid); in push_node_left()
3200 WARN_ON(btrfs_header_generation(dst) != trans->transid); in push_node_left()
3226 btrfs_abort_transaction(trans, root, ret); in push_node_left()
3261 static int balance_node_right(struct btrfs_trans_handle *trans, in balance_node_right() argument
3272 WARN_ON(btrfs_header_generation(src) != trans->transid); in balance_node_right()
3273 WARN_ON(btrfs_header_generation(dst) != trans->transid); in balance_node_right()
3301 btrfs_abort_transaction(trans, root, ret); in balance_node_right()
3325 static noinline int insert_new_root(struct btrfs_trans_handle *trans, in insert_new_root() argument
3344 c = btrfs_alloc_tree_block(trans, root, 0, root->root_key.objectid, in insert_new_root()
3355 btrfs_set_header_generation(c, trans->transid); in insert_new_root()
3368 WARN_ON(lower_gen != trans->transid); in insert_new_root()
3396 static void insert_ptr(struct btrfs_trans_handle *trans, in insert_ptr() argument
3427 WARN_ON(trans->transid == 0); in insert_ptr()
3428 btrfs_set_node_ptr_generation(lower, slot, trans->transid); in insert_ptr()
3442 static noinline int split_node(struct btrfs_trans_handle *trans, in split_node() argument
3454 WARN_ON(btrfs_header_generation(c) != trans->transid); in split_node()
3466 ret = insert_new_root(trans, root, path, level + 1); in split_node()
3470 ret = push_nodes_for_insert(trans, root, path, level); in split_node()
3483 split = btrfs_alloc_tree_block(trans, root, 0, root->root_key.objectid, in split_node()
3493 btrfs_set_header_generation(split, trans->transid); in split_node()
3505 btrfs_abort_transaction(trans, root, ret); in split_node()
3519 insert_ptr(trans, root, path, &disk_key, split->start, in split_node()
3586 static noinline int __push_leaf_right(struct btrfs_trans_handle *trans, in __push_leaf_right() argument
3696 clean_tree_block(trans, root->fs_info, left); in __push_leaf_right()
3708 clean_tree_block(trans, root->fs_info, path->nodes[0]); in __push_leaf_right()
3735 static int push_leaf_right(struct btrfs_trans_handle *trans, struct btrfs_root in push_leaf_right() argument
3770 ret = btrfs_cow_block(trans, root, right, upper, in push_leaf_right()
3796 return __push_leaf_right(trans, root, path, min_data_size, empty, in push_leaf_right()
3812 static noinline int __push_leaf_left(struct btrfs_trans_handle *trans, in __push_leaf_left() argument
3932 clean_tree_block(trans, root->fs_info, right); in __push_leaf_left()
3965 static int push_leaf_left(struct btrfs_trans_handle *trans, struct btrfs_root in push_leaf_left() argument
4002 ret = btrfs_cow_block(trans, root, left, in push_leaf_left()
4017 return __push_leaf_left(trans, root, path, min_data_size, in push_leaf_left()
4030 static noinline void copy_for_split(struct btrfs_trans_handle *trans, in copy_for_split() argument
4072 insert_ptr(trans, root, path, &disk_key, right->start, in copy_for_split()
4103 static noinline int push_for_double_split(struct btrfs_trans_handle *trans, in push_for_double_split() argument
4122 ret = push_leaf_right(trans, root, path, 1, space_needed, 0, slot); in push_for_double_split()
4142 ret = push_leaf_left(trans, root, path, 1, space_needed, 0, slot); in push_for_double_split()
4160 static noinline int split_leaf(struct btrfs_trans_handle *trans, in split_leaf() argument
4192 wret = push_leaf_right(trans, root, path, space_needed, in split_leaf()
4197 wret = push_leaf_left(trans, root, path, space_needed, in split_leaf()
4210 ret = insert_new_root(trans, root, path, 1); in split_leaf()
4263 right = btrfs_alloc_tree_block(trans, root, 0, root->root_key.objectid, in split_leaf()
4272 btrfs_set_header_generation(right, trans->transid); in split_leaf()
4286 insert_ptr(trans, root, path, &disk_key, right->start, in split_leaf()
4295 insert_ptr(trans, root, path, &disk_key, right->start, in split_leaf()
4308 copy_for_split(trans, root, path, l, right, slot, mid, nritems); in split_leaf()
4319 push_for_double_split(trans, root, path, data_size); in split_leaf()
4326 static noinline int setup_leaf_for_split(struct btrfs_trans_handle *trans, in setup_leaf_for_split() argument
4356 ret = btrfs_search_slot(trans, root, &key, path, 0, 1); in setup_leaf_for_split()
4381 ret = split_leaf(trans, root, &key, path, ins_len, 1); in setup_leaf_for_split()
4393 static noinline int split_item(struct btrfs_trans_handle *trans, in split_item() argument
4479 int btrfs_split_item(struct btrfs_trans_handle *trans, in btrfs_split_item() argument
4486 ret = setup_leaf_for_split(trans, root, path, in btrfs_split_item()
4491 ret = split_item(trans, root, path, new_key, split_offset); in btrfs_split_item()
4503 int btrfs_duplicate_item(struct btrfs_trans_handle *trans, in btrfs_duplicate_item() argument
4514 ret = setup_leaf_for_split(trans, root, path, in btrfs_duplicate_item()
4797 int btrfs_insert_empty_items(struct btrfs_trans_handle *trans, in btrfs_insert_empty_items() argument
4813 ret = btrfs_search_slot(trans, root, cpu_key, path, total_size, 1); in btrfs_insert_empty_items()
4831 int btrfs_insert_item(struct btrfs_trans_handle *trans, struct btrfs_root in btrfs_insert_item() argument
4843 ret = btrfs_insert_empty_item(trans, root, path, cpu_key, data_size); in btrfs_insert_item()
4908 static noinline void btrfs_del_leaf(struct btrfs_trans_handle *trans, in btrfs_del_leaf() argument
4913 WARN_ON(btrfs_header_generation(leaf) != trans->transid); in btrfs_del_leaf()
4925 btrfs_free_tree_block(trans, root, leaf, 0, 1); in btrfs_del_leaf()
4932 int btrfs_del_items(struct btrfs_trans_handle *trans, struct btrfs_root *root, in btrfs_del_items() argument
4986 clean_tree_block(trans, root->fs_info, leaf); in btrfs_del_items()
4987 btrfs_del_leaf(trans, root, path, leaf); in btrfs_del_items()
5008 wret = push_leaf_left(trans, root, path, 1, 1, in btrfs_del_items()
5015 wret = push_leaf_right(trans, root, path, 1, in btrfs_del_items()
5023 btrfs_del_leaf(trans, root, path, leaf); in btrfs_del_items()