Lines Matching refs:parent
510 * does the dirty work in cow of a single block. The parent block (if
524 struct extent_buffer *parent, int parent_slot,
554 if ((root->root_key.objectid == BTRFS_TREE_RELOC_OBJECTID) && parent)
555 parent_start = parent->start;
597 WARN_ON(parent && parent != buf);
617 WARN_ON(trans->transid != btrfs_header_generation(parent));
618 ret = btrfs_tree_mod_log_insert_key(parent, parent_slot,
626 btrfs_set_node_blockptr(parent, parent_slot,
628 btrfs_set_node_ptr_generation(parent, parent_slot,
630 btrfs_mark_buffer_dirty(trans, parent);
688 struct extent_buffer *parent, int parent_slot,
735 ret = __btrfs_cow_block(trans, root, buf, parent,
813 struct btrfs_root *root, struct extent_buffer *parent,
841 "unexpected transaction when attempting to reallocate parent %llu for root %llu, transaction %llu running transaction %llu fs generation %llu",
842 parent->start, btrfs_root_id(root), trans->transid,
848 parent_nritems = btrfs_header_nritems(parent);
858 btrfs_node_key(parent, &disk_key, i);
863 blocknr = btrfs_node_blockptr(parent, i);
868 other = btrfs_node_blockptr(parent, i - 1);
872 other = btrfs_node_blockptr(parent, i + 1);
880 cur = btrfs_read_node_slot(parent, i);
887 err = __btrfs_cow_block(trans, root, cur, parent, i,
1006 struct extent_buffer *btrfs_read_node_slot(struct extent_buffer *parent,
1009 int level = btrfs_header_level(parent);
1013 if (slot < 0 || slot >= btrfs_header_nritems(parent))
1019 check.transid = btrfs_node_ptr_generation(parent, slot);
1020 check.owner_root = btrfs_header_owner(parent);
1022 btrfs_node_key_to_cpu(parent, &check.first_key, slot);
1024 eb = read_tree_block(parent->fs_info, btrfs_node_blockptr(parent, slot),
1049 struct extent_buffer *parent = NULL;
1066 parent = path->nodes[level + 1];
1074 if (!parent) {
1126 left = btrfs_read_node_slot(parent, pslot - 1);
1135 parent, pslot - 1, &left,
1143 if (pslot + 1 < btrfs_header_nritems(parent)) {
1144 right = btrfs_read_node_slot(parent, pslot + 1);
1153 parent, pslot + 1, &right,
1193 ret = btrfs_tree_mod_log_insert_key(parent, pslot + 1,
1199 btrfs_set_node_key(parent, &right_key, pslot + 1);
1200 btrfs_mark_buffer_dirty(trans, parent);
1215 "missing left child when middle child only has 1 item, parent bytenr %llu level %d mid bytenr %llu root %llu",
1216 parent->start, btrfs_header_level(parent),
1248 /* update the parent key to reflect our changes */
1251 ret = btrfs_tree_mod_log_insert_key(parent, pslot,
1257 btrfs_set_node_key(parent, &mid_key, pslot);
1258 btrfs_mark_buffer_dirty(trans, parent);
1307 struct extent_buffer *parent = NULL;
1320 parent = path->nodes[level + 1];
1324 if (!parent)
1331 left = btrfs_read_node_slot(parent, pslot - 1);
1341 ret = btrfs_cow_block(trans, root, left, parent,
1356 ret = btrfs_tree_mod_log_insert_key(parent, pslot,
1364 btrfs_set_node_key(parent, &disk_key, pslot);
1365 btrfs_mark_buffer_dirty(trans, parent);
1388 if (pslot + 1 < btrfs_header_nritems(parent)) {
1391 right = btrfs_read_node_slot(parent, pslot + 1);
1402 parent, pslot + 1,
1416 ret = btrfs_tree_mod_log_insert_key(parent, pslot + 1,
1424 btrfs_set_node_key(parent, &disk_key, pslot + 1);
1425 btrfs_mark_buffer_dirty(trans, parent);
1535 struct extent_buffer *parent;
1539 parent = path->nodes[level + 1];
1540 if (!parent)
1543 nritems = btrfs_header_nritems(parent);
1547 btrfs_readahead_node_child(parent, slot - 1);
1549 btrfs_readahead_node_child(parent, slot + 1);
1951 * If a previous call to btrfs_bin_search() on a parent node returned an
1981 * write lock on the parent, and any other upper nodes, before doing the
1983 * tasks to lock the parent and any other upper nodes.
2033 * to update the key at slot 0 of the parent node
2215 * parent
2246 * It is safe to drop the lock on our parent before we
2250 * be changing slot zero, which may require changing the parent.
2297 * the parent pointer which means we must have a write lock on
2298 * the parent
2414 * It is safe to drop the lock on our parent before we
4310 * Before anything else, update keys in the parent and other ancestors
4507 struct extent_buffer *parent = path->nodes[level];
4511 nritems = btrfs_header_nritems(parent);
4514 ret = btrfs_tree_mod_log_insert_move(parent, slot,
4521 memmove_extent_buffer(parent,
4522 btrfs_node_key_ptr_offset(parent, slot),
4523 btrfs_node_key_ptr_offset(parent, slot + 1),
4527 ret = btrfs_tree_mod_log_insert_key(parent, slot,
4536 btrfs_set_header_nritems(parent, nritems);
4537 if (nritems == 0 && parent == root->node) {
4544 btrfs_node_key(parent, &disk_key, 0);
4547 btrfs_mark_buffer_dirty(trans, parent);