Lines Matching +full:1 +full:eb
125 struct extent_buffer *eb; in btrfs_root_node() local
127 while (1) { in btrfs_root_node()
129 eb = rcu_dereference(root->node); in btrfs_root_node()
137 if (atomic_inc_not_zero(&eb->refs)) { in btrfs_root_node()
144 return eb; in btrfs_root_node()
221 ret = btrfs_inc_ref(trans, root, cow, 1); in btrfs_copy_root()
313 u64 min_seq = (u64)-1; in btrfs_put_tree_mod_seq()
398 * Determines if logging can be omitted. Returns 1 if it can. Otherwise, it
404 struct extent_buffer *eb) { in tree_mod_dont_log() argument
407 return 1; in tree_mod_dont_log()
408 if (eb && btrfs_header_level(eb) == 0) in tree_mod_dont_log()
409 return 1; in tree_mod_dont_log()
414 return 1; in tree_mod_dont_log()
422 struct extent_buffer *eb) in tree_mod_need_log() argument
427 if (eb && btrfs_header_level(eb) == 0) in tree_mod_need_log()
430 return 1; in tree_mod_need_log()
434 alloc_tree_mod_elem(struct extent_buffer *eb, int slot, in alloc_tree_mod_elem() argument
443 tm->logical = eb->start; in alloc_tree_mod_elem()
445 btrfs_node_key(eb, &tm->key, slot); in alloc_tree_mod_elem()
446 tm->blockptr = btrfs_node_blockptr(eb, slot); in alloc_tree_mod_elem()
450 tm->generation = btrfs_node_ptr_generation(eb, slot); in alloc_tree_mod_elem()
456 static noinline int tree_mod_log_insert_key(struct extent_buffer *eb, int slot, in tree_mod_log_insert_key() argument
462 if (!tree_mod_need_log(eb->fs_info, eb)) in tree_mod_log_insert_key()
465 tm = alloc_tree_mod_elem(eb, slot, op, flags); in tree_mod_log_insert_key()
469 if (tree_mod_dont_log(eb->fs_info, eb)) { in tree_mod_log_insert_key()
474 ret = __tree_mod_log_insert(eb->fs_info, tm); in tree_mod_log_insert_key()
475 write_unlock(&eb->fs_info->tree_mod_log_lock); in tree_mod_log_insert_key()
482 static noinline int tree_mod_log_insert_move(struct extent_buffer *eb, in tree_mod_log_insert_move() argument
491 if (!tree_mod_need_log(eb->fs_info, eb)) in tree_mod_log_insert_move()
504 tm->logical = eb->start; in tree_mod_log_insert_move()
511 tm_list[i] = alloc_tree_mod_elem(eb, i + dst_slot, in tree_mod_log_insert_move()
519 if (tree_mod_dont_log(eb->fs_info, eb)) in tree_mod_log_insert_move()
521 locked = 1; in tree_mod_log_insert_move()
529 ret = __tree_mod_log_insert(eb->fs_info, tm_list[i]); in tree_mod_log_insert_move()
534 ret = __tree_mod_log_insert(eb->fs_info, tm); in tree_mod_log_insert_move()
537 write_unlock(&eb->fs_info->tree_mod_log_lock); in tree_mod_log_insert_move()
544 rb_erase(&tm_list[i]->node, &eb->fs_info->tree_mod_log); in tree_mod_log_insert_move()
548 write_unlock(&eb->fs_info->tree_mod_log_lock); in tree_mod_log_insert_move()
563 for (i = nritems - 1; i >= 0; i--) { in __tree_mod_log_free_eb()
566 for (j = nritems - 1; j > i; j--) in __tree_mod_log_free_eb()
696 return __tree_mod_log_search(fs_info, start, min_seq, 1); in tree_mod_log_search_oldest()
752 locked = 1; in tree_mod_log_eb_copy()
781 static noinline int tree_mod_log_free_eb(struct extent_buffer *eb) in tree_mod_log_free_eb() argument
788 if (btrfs_header_level(eb) == 0) in tree_mod_log_free_eb()
791 if (!tree_mod_need_log(eb->fs_info, NULL)) in tree_mod_log_free_eb()
794 nritems = btrfs_header_nritems(eb); in tree_mod_log_free_eb()
800 tm_list[i] = alloc_tree_mod_elem(eb, i, in tree_mod_log_free_eb()
808 if (tree_mod_dont_log(eb->fs_info, eb)) in tree_mod_log_free_eb()
811 ret = __tree_mod_log_free_eb(eb->fs_info, tm_list, nritems); in tree_mod_log_free_eb()
812 write_unlock(&eb->fs_info->tree_mod_log_lock); in tree_mod_log_free_eb()
843 return 1; in btrfs_block_can_be_shared()
880 btrfs_header_level(buf), 1, in update_ref_for_cow()
890 refs = 1; in update_ref_for_cow()
902 if (refs > 1) { in update_ref_for_cow()
906 ret = btrfs_inc_ref(trans, root, buf, 1); in update_ref_for_cow()
915 ret = btrfs_inc_ref(trans, root, cow, 1); in update_ref_for_cow()
924 ret = btrfs_inc_ref(trans, root, cow, 1); in update_ref_for_cow()
942 ret = btrfs_inc_ref(trans, root, cow, 1); in update_ref_for_cow()
947 ret = btrfs_dec_ref(trans, root, buf, 1); in update_ref_for_cow()
952 *last_ref = 1; in update_ref_for_cow()
1029 unlock_orig = 1; in __btrfs_cow_block()
1093 ret = tree_mod_log_insert_root(root->node, cow, 1); in __btrfs_cow_block()
1151 while (1) { in __tree_mod_log_oldest_root()
1174 looped = 1; in __tree_mod_log_oldest_root()
1185 * tm is a pointer to the first operation to rewind within eb. then, all
1190 __tree_mod_log_rewind(struct btrfs_fs_info *fs_info, struct extent_buffer *eb, in __tree_mod_log_rewind() argument
1200 n = btrfs_header_nritems(eb); in __tree_mod_log_rewind()
1214 btrfs_set_node_key(eb, &tm->key, tm->slot); in __tree_mod_log_rewind()
1215 btrfs_set_node_blockptr(eb, tm->slot, tm->blockptr); in __tree_mod_log_rewind()
1216 btrfs_set_node_ptr_generation(eb, tm->slot, in __tree_mod_log_rewind()
1222 btrfs_set_node_key(eb, &tm->key, tm->slot); in __tree_mod_log_rewind()
1223 btrfs_set_node_blockptr(eb, tm->slot, tm->blockptr); in __tree_mod_log_rewind()
1224 btrfs_set_node_ptr_generation(eb, tm->slot, in __tree_mod_log_rewind()
1234 memmove_extent_buffer(eb, o_dst, o_src, in __tree_mod_log_rewind()
1257 btrfs_set_header_nritems(eb, n); in __tree_mod_log_rewind()
1261 * Called with eb read locked. If the buffer cannot be rewound, the same buffer
1269 struct extent_buffer *eb, u64 time_seq) in tree_mod_log_rewind() argument
1275 return eb; in tree_mod_log_rewind()
1277 if (btrfs_header_level(eb) == 0) in tree_mod_log_rewind()
1278 return eb; in tree_mod_log_rewind()
1280 tm = tree_mod_log_search(fs_info, eb->start, time_seq); in tree_mod_log_rewind()
1282 return eb; in tree_mod_log_rewind()
1285 btrfs_set_lock_blocking_read(eb); in tree_mod_log_rewind()
1289 eb_rewin = alloc_dummy_extent_buffer(fs_info, eb->start); in tree_mod_log_rewind()
1291 btrfs_tree_read_unlock_blocking(eb); in tree_mod_log_rewind()
1292 free_extent_buffer(eb); in tree_mod_log_rewind()
1295 btrfs_set_header_bytenr(eb_rewin, eb->start); in tree_mod_log_rewind()
1297 btrfs_header_backref_rev(eb)); in tree_mod_log_rewind()
1298 btrfs_set_header_owner(eb_rewin, btrfs_header_owner(eb)); in tree_mod_log_rewind()
1299 btrfs_set_header_level(eb_rewin, btrfs_header_level(eb)); in tree_mod_log_rewind()
1301 eb_rewin = btrfs_clone_extent_buffer(eb); in tree_mod_log_rewind()
1303 btrfs_tree_read_unlock_blocking(eb); in tree_mod_log_rewind()
1304 free_extent_buffer(eb); in tree_mod_log_rewind()
1309 btrfs_tree_read_unlock_blocking(eb); in tree_mod_log_rewind()
1310 free_extent_buffer(eb); in tree_mod_log_rewind()
1334 struct extent_buffer *eb = NULL; in get_old_root() local
1373 eb = btrfs_clone_extent_buffer(old); in get_old_root()
1390 free_extent_buffer(eb); in get_old_root()
1399 eb = alloc_dummy_extent_buffer(fs_info, logical); in get_old_root()
1402 eb = btrfs_clone_extent_buffer(eb_root); in get_old_root()
1407 if (!eb) in get_old_root()
1410 btrfs_set_header_bytenr(eb, eb->start); in get_old_root()
1411 btrfs_set_header_backref_rev(eb, BTRFS_MIXED_BACKREF_REV); in get_old_root()
1412 btrfs_set_header_owner(eb, eb_root_owner); in get_old_root()
1413 btrfs_set_header_level(eb, old_root->level); in get_old_root()
1414 btrfs_set_header_generation(eb, old_generation); in get_old_root()
1416 btrfs_set_buffer_lockdep_class(btrfs_header_owner(eb), eb, in get_old_root()
1417 btrfs_header_level(eb)); in get_old_root()
1418 btrfs_tree_read_lock(eb); in get_old_root()
1420 __tree_mod_log_rewind(fs_info, eb, time_seq, tm); in get_old_root()
1422 WARN_ON(btrfs_header_level(eb) != 0); in get_old_root()
1423 WARN_ON(btrfs_header_nritems(eb) > BTRFS_NODEPTRS_PER_BLOCK(fs_info)); in get_old_root()
1425 return eb; in get_old_root()
1457 * 1) this block is not created or changed in this transaction; in should_cow_block()
1472 return 1; in should_cow_block()
1495 WARN(1, KERN_CRIT "trans %llu running %llu\n", in btrfs_cow_block()
1500 WARN(1, KERN_CRIT "trans %llu running %llu\n", in btrfs_cow_block()
1509 search_start = buf->start & ~((u64)SZ_1G - 1); in btrfs_cow_block()
1537 return 1; in close_blocks()
1539 return 1; in close_blocks()
1579 return 1; in btrfs_comp_cpu_keys()
1581 return -1; in btrfs_comp_cpu_keys()
1583 return 1; in btrfs_comp_cpu_keys()
1585 return -1; in btrfs_comp_cpu_keys()
1587 return 1; in btrfs_comp_cpu_keys()
1589 return -1; in btrfs_comp_cpu_keys()
1627 end_slot = parent_nritems - 1; in btrfs_realloc_node()
1629 if (parent_nritems <= 1) in btrfs_realloc_node()
1636 int close = 1; in btrfs_realloc_node()
1642 progress_passed = 1; in btrfs_realloc_node()
1650 other = btrfs_node_blockptr(parent, i - 1); in btrfs_realloc_node()
1654 other = btrfs_node_blockptr(parent, i + 1); in btrfs_realloc_node()
1670 parent_level - 1, in btrfs_realloc_node()
1680 parent_level - 1,&first_key); in btrfs_realloc_node()
1721 static noinline int generic_bin_search(struct extent_buffer *eb, in generic_bin_search() argument
1732 btrfs_err(eb->fs_info, in generic_bin_search()
1733 "%s: low (%d) > high (%d) eb %llu owner %llu level %d", in generic_bin_search()
1734 __func__, low, high, eb->start, in generic_bin_search()
1735 btrfs_header_owner(eb), btrfs_header_level(eb)); in generic_bin_search()
1752 char *kaddr = page_address(eb->pages[idx]); in generic_bin_search()
1756 read_extent_buffer(eb, &unaligned, offset, key_size); in generic_bin_search()
1763 low = mid + 1; in generic_bin_search()
1772 return 1; in generic_bin_search()
1779 int btrfs_bin_search(struct extent_buffer *eb, const struct btrfs_key *key, in btrfs_bin_search() argument
1782 if (btrfs_header_level(eb) == 0) in btrfs_bin_search()
1783 return generic_bin_search(eb, in btrfs_bin_search()
1786 key, btrfs_header_nritems(eb), in btrfs_bin_search()
1789 return generic_bin_search(eb, in btrfs_bin_search()
1792 key, btrfs_header_nritems(eb), in btrfs_bin_search()
1819 struct extent_buffer *eb; in btrfs_read_node_slot() local
1828 eb = read_tree_block(parent->fs_info, btrfs_node_blockptr(parent, slot), in btrfs_read_node_slot()
1830 level - 1, &first_key); in btrfs_read_node_slot()
1831 if (!IS_ERR(eb) && !extent_buffer_uptodate(eb)) { in btrfs_read_node_slot()
1832 free_extent_buffer(eb); in btrfs_read_node_slot()
1833 eb = ERR_PTR(-EIO); in btrfs_read_node_slot()
1836 return eb; in btrfs_read_node_slot()
1869 if (level < BTRFS_MAX_LEVEL - 1) { in balance_level()
1870 parent = path->nodes[level + 1]; in balance_level()
1871 pslot = path->slots[level + 1]; in balance_level()
1881 if (btrfs_header_nritems(mid) != 1) in balance_level()
1902 ret = tree_mod_log_insert_root(root->node, child, 1); in balance_level()
1917 btrfs_free_tree_block(trans, root, mid, 0, 1); in balance_level()
1926 left = btrfs_read_node_slot(parent, pslot - 1); in balance_level()
1934 parent, pslot - 1, &left, in balance_level()
1942 right = btrfs_read_node_slot(parent, pslot + 1); in balance_level()
1950 parent, pslot + 1, &right, in balance_level()
1961 wret = push_node_left(trans, left, mid, 1); in balance_level()
1970 wret = push_node_left(trans, mid, right, 1); in balance_level()
1976 del_ptr(root, path, level + 1, pslot + 1); in balance_level()
1978 btrfs_free_tree_block(trans, root, right, 0, 1); in balance_level()
1984 ret = tree_mod_log_insert_key(parent, pslot + 1, in balance_level()
1987 btrfs_set_node_key(parent, &right_key, pslot + 1); in balance_level()
1991 if (btrfs_header_nritems(mid) == 1) { in balance_level()
2011 if (wret == 1) { in balance_level()
2012 wret = push_node_left(trans, left, mid, 1); in balance_level()
2016 BUG_ON(wret == 1); in balance_level()
2021 del_ptr(root, path, level + 1, pslot); in balance_level()
2023 btrfs_free_tree_block(trans, root, mid, 0, 1); in balance_level()
2043 path->slots[level + 1] -= 1; in balance_level()
2090 return 1; in push_nodes_for_insert()
2095 if (level < BTRFS_MAX_LEVEL - 1) { in push_nodes_for_insert()
2096 parent = path->nodes[level + 1]; in push_nodes_for_insert()
2097 pslot = path->slots[level + 1]; in push_nodes_for_insert()
2101 return 1; in push_nodes_for_insert()
2103 left = btrfs_read_node_slot(parent, pslot - 1); in push_nodes_for_insert()
2115 if (left_nr >= BTRFS_NODEPTRS_PER_BLOCK(fs_info) - 1) { in push_nodes_for_insert()
2116 wret = 1; in push_nodes_for_insert()
2119 pslot - 1, &left, in push_nodes_for_insert()
2122 wret = 1; in push_nodes_for_insert()
2140 path->slots[level + 1] -= 1; in push_nodes_for_insert()
2156 right = btrfs_read_node_slot(parent, pslot + 1); in push_nodes_for_insert()
2170 if (right_nr >= BTRFS_NODEPTRS_PER_BLOCK(fs_info) - 1) { in push_nodes_for_insert()
2171 wret = 1; in push_nodes_for_insert()
2174 parent, pslot + 1, in push_nodes_for_insert()
2177 wret = 1; in push_nodes_for_insert()
2188 ret = tree_mod_log_insert_key(parent, pslot + 1, in push_nodes_for_insert()
2191 btrfs_set_node_key(parent, &disk_key, pslot + 1); in push_nodes_for_insert()
2196 path->slots[level + 1] += 1; in push_nodes_for_insert()
2210 return 1; in push_nodes_for_insert()
2227 struct extent_buffer *eb; in reada_for_search() local
2232 if (level != 1) in reada_for_search()
2242 eb = find_extent_buffer(fs_info, search); in reada_for_search()
2243 if (eb) { in reada_for_search()
2244 free_extent_buffer(eb); in reada_for_search()
2253 while (1) { in reada_for_search()
2286 struct extent_buffer *eb; in reada_for_balance() local
2291 parent = path->nodes[level + 1]; in reada_for_balance()
2296 slot = path->slots[level + 1]; in reada_for_balance()
2299 block1 = btrfs_node_blockptr(parent, slot - 1); in reada_for_balance()
2300 gen = btrfs_node_ptr_generation(parent, slot - 1); in reada_for_balance()
2301 eb = find_extent_buffer(fs_info, block1); in reada_for_balance()
2307 if (eb && btrfs_buffer_uptodate(eb, gen, 1) != 0) in reada_for_balance()
2309 free_extent_buffer(eb); in reada_for_balance()
2311 if (slot + 1 < nritems) { in reada_for_balance()
2312 block2 = btrfs_node_blockptr(parent, slot + 1); in reada_for_balance()
2313 gen = btrfs_node_ptr_generation(parent, slot + 1); in reada_for_balance()
2314 eb = find_extent_buffer(fs_info, block2); in reada_for_balance()
2315 if (eb && btrfs_buffer_uptodate(eb, gen, 1) != 0) in reada_for_balance()
2317 free_extent_buffer(eb); in reada_for_balance()
2338 * if lowest_unlock is 1, level 0 won't be unlocked
2355 skip_level = i + 1; in unlock_up()
2362 if (nritems < 1 || path->slots[i] >= nritems - 1) { in unlock_up()
2363 skip_level = i + 1; in unlock_up()
2368 no_skips = 1; in unlock_up()
2377 *write_lock_level = i - 1; in unlock_up()
2412 if (btrfs_buffer_uptodate(tmp, gen, 1) > 0) { in read_block_for_search()
2414 * Do extra check for first_key, eb can be stale due to in read_block_for_search()
2419 parent_level - 1, &first_key, gen)) { in read_block_for_search()
2436 ret = btrfs_read_buffer(tmp, gen, parent_level - 1, &first_key); in read_block_for_search()
2453 btrfs_unlock_up_safe(p, level + 1); in read_block_for_search()
2460 tmp = read_tree_block(fs_info, blocknr, gen, parent_level - 1, in read_block_for_search()
2502 if (*write_lock_level < level + 1) { in setup_nodes_for_search()
2503 *write_lock_level = level + 1; in setup_nodes_for_search()
2522 if (*write_lock_level < level + 1) { in setup_nodes_for_search()
2523 *write_lock_level = level + 1; in setup_nodes_for_search()
2541 BUG_ON(btrfs_header_nritems(b) == 1); in setup_nodes_for_search()
2557 struct extent_buffer *eb; in btrfs_find_item() local
2570 eb = path->nodes[0]; in btrfs_find_item()
2571 if (ret && path->slots[0] >= btrfs_header_nritems(eb)) { in btrfs_find_item()
2575 eb = path->nodes[0]; in btrfs_find_item()
2578 btrfs_item_key_to_cpu(eb, found_key, path->slots[0]); in btrfs_find_item()
2581 return 1; in btrfs_find_item()
2619 * p->search_commit_root = 1. in btrfs_search_slot_get_root()
2621 ASSERT(p->skip_locking == 1); in btrfs_search_slot_get_root()
2690 * @ins_len: Indicates purpose of search, for inserts it is 1, for
2691 * deletions it's -1. 0 for plain searches
2692 * @cow: boolean should CoW operations be performed. Must always be 1
2701 * If @key isn't found, 1 is returned and the leaf level of the path (level 0)
2716 int lowest_unlock = 1; in btrfs_search_slot()
2739 * level 1 so we can update keys in btrfs_search_slot()
2741 write_lock_level = 1; in btrfs_search_slot()
2745 write_lock_level = -1; in btrfs_search_slot()
2753 prev_cmp = -1; in btrfs_search_slot()
2766 bool last_level = (level == (BTRFS_MAX_LEVEL - 1)); in btrfs_search_slot()
2783 (level + 1 > write_lock_level && in btrfs_search_slot()
2784 level + 1 < BTRFS_MAX_LEVEL && in btrfs_search_slot()
2785 p->nodes[level + 1])) { in btrfs_search_slot()
2786 write_lock_level = level + 1; in btrfs_search_slot()
2798 p->nodes[level + 1], in btrfs_search_slot()
2799 p->slots[level + 1], &b, in btrfs_search_slot()
2825 int u = level + 1; in btrfs_search_slot()
2855 if (write_lock_level < 1) { in btrfs_search_slot()
2856 write_lock_level = 1; in btrfs_search_slot()
2877 dec = 1; in btrfs_search_slot()
2897 if (slot == 0 && ins_len && write_lock_level < level + 1) { in btrfs_search_slot()
2898 write_lock_level = level + 1; in btrfs_search_slot()
2939 ret = 1; in btrfs_search_slot()
2972 int lowest_unlock = 1; in btrfs_search_old_slot()
3004 btrfs_unlock_up_safe(p, level + 1); in btrfs_search_old_slot()
3017 dec = 1; in btrfs_search_old_slot()
3050 ret = 1; in btrfs_search_old_slot()
3069 * It returns 0 if any item is found, 1 if none is found (tree empty), and
3085 * a return value of 1 means the path is at the position where the in btrfs_search_slot_for_read()
3099 return 1; in btrfs_search_slot_for_read()
3121 return 1; in btrfs_search_slot_for_read()
3127 find_higher = 1; in btrfs_search_slot_for_read()
3179 struct extent_buffer *eb; in btrfs_set_item_key_safe() local
3182 eb = path->nodes[0]; in btrfs_set_item_key_safe()
3185 btrfs_item_key(eb, &disk_key, slot - 1); in btrfs_set_item_key_safe()
3194 btrfs_print_leaf(eb); in btrfs_set_item_key_safe()
3198 if (slot < btrfs_header_nritems(eb) - 1) { in btrfs_set_item_key_safe()
3199 btrfs_item_key(eb, &disk_key, slot + 1); in btrfs_set_item_key_safe()
3208 btrfs_print_leaf(eb); in btrfs_set_item_key_safe()
3214 btrfs_set_item_key(eb, &disk_key, slot); in btrfs_set_item_key_safe()
3215 btrfs_mark_buffer_dirty(eb); in btrfs_set_item_key_safe()
3217 fixup_low_keys(path, &disk_key, 1); in btrfs_set_item_key_safe()
3231 * | 1 | 2 | 3 | 4 | 5 | f6 | | 7 | 8 |
3254 btrfs_node_key_to_cpu(left, &left_last, nr_left - 1); in check_sibling_keys()
3257 btrfs_item_key_to_cpu(left, &left_last, nr_left - 1); in check_sibling_keys()
3296 return 1; in push_node_left()
3299 return 1; in push_node_left()
3309 return 1; in push_node_left()
3316 /* dst is the left eb, src is the middle eb */ in push_node_left()
3357 * this will only push up to 1/2 the contents of the left node over
3377 return 1; in balance_node_right()
3380 return 1; in balance_node_right()
3382 max_push = src_nritems / 2 + 1; in balance_node_right()
3385 return 1; in balance_node_right()
3390 /* dst is the right eb, src is the middle eb */ in balance_node_right()
3443 BUG_ON(path->nodes[level-1] != root->node); in insert_new_root()
3445 lower = path->nodes[level-1]; in insert_new_root()
3446 if (level == 1) in insert_new_root()
3459 btrfs_set_header_nritems(c, 1); in insert_new_root()
3509 ret = tree_mod_log_insert_move(lower, slot + 1, slot, in insert_ptr()
3514 btrfs_node_key_ptr_offset(slot + 1), in insert_ptr()
3527 btrfs_set_header_nritems(lower, nritems + 1); in insert_ptr()
3565 ret = insert_new_root(trans, root, path, level + 1); in split_node()
3579 mid = (c_nritems + 1) / 2; in split_node()
3607 path->slots[level + 1] + 1, level + 1); in split_node()
3614 path->slots[level + 1] += 1; in split_node()
3633 int end = min(nritems, start + nr) - 1; in leaf_space_used()
3681 struct extent_buffer *upper = path->nodes[1]; in __push_leaf_right()
3697 nr = max_t(u32, 1, min_slot); in __push_leaf_right()
3702 slot = path->slots[1]; in __push_leaf_right()
3703 i = left_nritems - 1; in __push_leaf_right()
3787 btrfs_set_node_key(upper, &disk_key, slot + 1); in __push_leaf_right()
3798 path->slots[1] += 1; in __push_leaf_right()
3808 return 1; in __push_leaf_right()
3815 * returns 1 if the push failed because the other node didn't have enough
3834 if (!path->nodes[1]) in push_leaf_right()
3835 return 1; in push_leaf_right()
3837 slot = path->slots[1]; in push_leaf_right()
3838 upper = path->nodes[1]; in push_leaf_right()
3839 if (slot >= btrfs_header_nritems(upper) - 1) in push_leaf_right()
3840 return 1; in push_leaf_right()
3842 btrfs_assert_tree_locked(path->nodes[1]); in push_leaf_right()
3844 right = btrfs_read_node_slot(upper, slot + 1); in push_leaf_right()
3846 * slot + 1 is not valid or we fail to read the right node, in push_leaf_right()
3850 return 1; in push_leaf_right()
3861 slot + 1, &right, BTRFS_NESTING_RIGHT_COW); in push_leaf_right()
3888 path->slots[1]++; in push_leaf_right()
3897 return 1; in push_leaf_right()
3905 * item at 'max_slot' won't be touched. Use (u32)-1 to make us do all the
3930 nr = min(right_nritems - 1, max_slot); in __push_leaf_left()
3958 ret = 1; in __push_leaf_left()
3970 btrfs_item_offset_nr(right, push_items - 1); in __push_leaf_left()
3975 btrfs_item_offset_nr(right, push_items - 1), in __push_leaf_left()
3981 old_left_item_size = btrfs_item_offset_nr(left, old_left_nritems - 1); in __push_leaf_left()
3995 WARN(1, KERN_CRIT "push items %d nr %u\n", push_items, in __push_leaf_left()
3999 push_space = btrfs_item_offset_nr(right, push_items - 1) - in __push_leaf_left()
4030 fixup_low_keys(path, &disk_key, 1); in __push_leaf_left()
4038 path->slots[1] -= 1; in __push_leaf_left()
4057 * item at 'max_slot' won't be touched. Use (u32)-1 to make us push all the
4071 slot = path->slots[1]; in push_leaf_left()
4073 return 1; in push_leaf_left()
4074 if (!path->nodes[1]) in push_leaf_left()
4075 return 1; in push_leaf_left()
4079 return 1; in push_leaf_left()
4081 btrfs_assert_tree_locked(path->nodes[1]); in push_leaf_left()
4083 left = btrfs_read_node_slot(path->nodes[1], slot - 1); in push_leaf_left()
4085 * slot - 1 is not valid or we fail to read the left node, in push_leaf_left()
4089 return 1; in push_leaf_left()
4096 ret = 1; in push_leaf_left()
4102 path->nodes[1], slot - 1, &left, in push_leaf_left()
4107 ret = 1; in push_leaf_left()
4113 ret = 1; in push_leaf_left()
4173 insert_ptr(trans, path, &disk_key, right->start, path->slots[1] + 1, 1); in copy_for_split()
4184 path->slots[1] += 1; in copy_for_split()
4196 * leaf: [ slots 0 - N] [ our target ] [ N + 1 - total in leaf ]
4222 ret = push_leaf_right(trans, root, path, 1, space_needed, 0, slot); in push_for_double_split()
4245 ret = push_leaf_left(trans, root, path, 1, space_needed, 0, slot); in push_for_double_split()
4254 return 1; in push_for_double_split()
4289 if (data_size && path->nodes[1]) { in split_leaf()
4304 space_needed, 0, (u32)-1); in split_leaf()
4315 if (!path->nodes[1]) { in split_leaf()
4316 ret = insert_new_root(trans, root, path, 1); in split_leaf()
4321 split = 1; in split_leaf()
4325 mid = (nritems + 1) / 2; in split_leaf()
4328 if (nritems == 1 || in split_leaf()
4350 mid = 1; in split_leaf()
4390 right->start, path->slots[1] + 1, 1); in split_leaf()
4395 path->slots[1] += 1; in split_leaf()
4399 right->start, path->slots[1], 1); in split_leaf()
4404 if (path->slots[1] == 0) in split_leaf()
4405 fixup_low_keys(path, &disk_key, 1); in split_leaf()
4427 tried_avoid_double = 1; in split_leaf()
4461 path->keep_locks = 1; in setup_leaf_for_split()
4462 path->search_for_split = 1; in setup_leaf_for_split()
4463 ret = btrfs_search_slot(trans, root, &key, path, 0, 1); in setup_leaf_for_split()
4488 ret = split_leaf(trans, root, &key, path, ins_len, 1); in setup_leaf_for_split()
4493 btrfs_unlock_up_safe(path, 1); in setup_leaf_for_split()
4530 slot = path->slots[0] + 1; in split_item()
4534 memmove_extent_buffer(leaf, btrfs_item_nr_offset(slot + 1), in split_item()
4551 btrfs_set_header_nritems(leaf, nritems + 1); in split_item()
4625 setup_items_for_insert(root, path, new_key, &item_size, 1); in btrfs_duplicate_item()
4629 btrfs_item_ptr_offset(leaf, path->slots[0] - 1), in btrfs_duplicate_item()
4720 fixup_low_keys(path, &disk_key, 1); in btrfs_truncate_item()
4831 fixup_low_keys(path, &disk_key, 1); in setup_items_for_insert()
4833 btrfs_unlock_up_safe(path, 1); in setup_items_for_insert()
4922 ret = btrfs_search_slot(trans, root, cpu_key, path, total_size, 1); in btrfs_insert_empty_items()
4976 if (slot != nritems - 1) { in del_ptr()
4978 ret = tree_mod_log_insert_move(parent, slot, slot + 1, in del_ptr()
4979 nritems - slot - 1); in del_ptr()
4984 btrfs_node_key_ptr_offset(slot + 1), in del_ptr()
4986 (nritems - slot - 1)); in del_ptr()
4996 BUG_ON(btrfs_header_level(root->node) != 1); in del_ptr()
5003 fixup_low_keys(path, &disk_key, level + 1); in del_ptr()
5009 * a helper function to delete the leaf pointed to by path->slots[1] and
5010 * path->nodes[1].
5012 * This deletes the pointer in path->nodes[1] and frees the leaf
5016 * all the proper balancing. path->nodes[1] must be locked.
5024 del_ptr(root, path, 1, path->slots[1]); in btrfs_del_leaf()
5035 btrfs_free_tree_block(trans, root, leaf, 0, 1); in btrfs_del_leaf()
5056 last_off = btrfs_item_offset_nr(leaf, slot + nr - 1); in btrfs_del_items()
5104 fixup_low_keys(path, &disk_key, 1); in btrfs_del_items()
5113 slot = path->slots[1]; in btrfs_del_items()
5117 wret = push_leaf_left(trans, root, path, 1, 1, in btrfs_del_items()
5118 1, (u32)-1); in btrfs_del_items()
5124 wret = push_leaf_right(trans, root, path, 1, in btrfs_del_items()
5125 1, 1, 0); in btrfs_del_items()
5131 path->slots[1] = slot; in btrfs_del_items()
5154 * returns 0 if it found something or 1 if there are no lesser leaves.
5172 key.offset = (u64)-1; in btrfs_prev_leaf()
5175 key.type = (u8)-1; in btrfs_prev_leaf()
5176 key.offset = (u64)-1; in btrfs_prev_leaf()
5178 return 1; in btrfs_prev_leaf()
5199 return 1; in btrfs_prev_leaf()
5208 * into min_key, so you can call btrfs_search_slot with cow=1 on the
5218 * returns zero if something useful was found, < 0 on error and 1 if there
5231 int ret = 1; in btrfs_search_forward()
5234 path->keep_locks = 1; in btrfs_search_forward()
5243 ret = 1; in btrfs_search_forward()
5246 while (1) { in btrfs_search_forward()
5313 path->locks[level - 1] = BTRFS_READ_LOCK; in btrfs_search_forward()
5314 path->nodes[level - 1] = cur; in btrfs_search_forward()
5315 unlock_up(path, level, 1, 0, NULL); in btrfs_search_forward()
5320 btrfs_unlock_up_safe(path, path->lowest_level + 1); in btrfs_search_forward()
5333 * and 1 is returned if there are no higher keys in the tree
5335 * path->keep_locks should be set to 1 on the search made before
5347 return 1; in btrfs_find_next_key()
5349 slot = path->slots[level] + 1; in btrfs_find_next_key()
5356 if (level + 1 >= BTRFS_MAX_LEVEL || in btrfs_find_next_key()
5357 !path->nodes[level + 1]) in btrfs_find_next_key()
5358 return 1; in btrfs_find_next_key()
5360 if (path->locks[level + 1] || path->skip_locking) { in btrfs_find_next_key()
5365 slot = btrfs_header_nritems(c) - 1; in btrfs_find_next_key()
5400 return 1; in btrfs_find_next_key()
5405 * returns 0 if it found something or 1 if there are no greater leaves.
5428 return 1; in btrfs_next_old_leaf()
5430 btrfs_item_key_to_cpu(path->nodes[0], &key, nritems - 1); in btrfs_next_old_leaf()
5432 level = 1; in btrfs_next_old_leaf()
5437 path->keep_locks = 1; in btrfs_next_old_leaf()
5438 path->leave_spinning = 1; in btrfs_next_old_leaf()
5456 if (nritems > 0 && path->slots[0] < nritems - 1) { in btrfs_next_old_leaf()
5476 if (nritems > 0 && ret > 0 && path->slots[0] == nritems - 1) { in btrfs_next_old_leaf()
5483 ret = 1; in btrfs_next_old_leaf()
5487 slot = path->slots[level] + 1; in btrfs_next_old_leaf()
5492 ret = 1; in btrfs_next_old_leaf()
5541 while (1) { in btrfs_next_old_leaf()
5578 unlock_up(path, 0, 1, 0, NULL); in btrfs_next_old_leaf()
5590 * returns 0 if something is found, 1 if nothing was found and < 0 on error
5601 while (1) { in btrfs_previous_item()
5613 return 1; in btrfs_previous_item()
5626 return 1; in btrfs_previous_item()
5633 * returns 0 if something is found, 1 if nothing was found and < 0 on error
5643 while (1) { in btrfs_previous_extent_item()
5655 return 1; in btrfs_previous_extent_item()
5669 return 1; in btrfs_previous_extent_item()