Lines Matching refs:node

161 	struct xfs_iext_node	*node = ifp->if_u1.if_root;
168 node = node->ptrs[0];
169 ASSERT(node);
172 return node;
179 struct xfs_iext_node *node = ifp->if_u1.if_root;
187 if (!node->ptrs[i])
189 node = node->ptrs[i - 1];
190 ASSERT(node);
193 return node;
277 struct xfs_iext_node *node,
281 if (node->keys[n] > offset)
283 if (node->keys[n] < offset)
309 struct xfs_iext_node *node = ifp->if_u1.if_root;
317 if (xfs_iext_key_cmp(node, i, offset) > 0)
320 node = node->ptrs[i - 1];
321 if (!node)
325 return node;
330 struct xfs_iext_node *node,
336 if (xfs_iext_key_cmp(node, i, offset) > 0)
345 struct xfs_iext_node *node,
351 if (xfs_iext_key_cmp(node, i, offset) > 0)
360 struct xfs_iext_node *node,
366 if (node->keys[i] == XFS_IEXT_KEY_INVALID)
401 struct xfs_iext_node *node = kmem_zalloc(NODE_SIZE, KM_NOFS);
407 node->keys[0] = xfs_iext_leaf_key(prev, 0);
408 node->ptrs[0] = prev;
414 node->keys[0] = prev->keys[0];
415 node->ptrs[0] = prev;
419 node->keys[i] = XFS_IEXT_KEY_INVALID;
421 ifp->if_u1.if_root = node;
433 struct xfs_iext_node *node = ifp->if_u1.if_root;
438 if (i > 0 && xfs_iext_key_cmp(node, i, old_offset) > 0)
440 if (node->keys[i] == old_offset)
441 node->keys[i] = new_offset;
443 node = node->ptrs[i - 1];
444 ASSERT(node);
447 ASSERT(node == ptr);
456 struct xfs_iext_node *node = *nodep;
462 /* for sequential append operations just spill over into the new node */
472 new->keys[i] = node->keys[nr_keep + i];
473 new->ptrs[i] = node->ptrs[nr_keep + i];
475 node->keys[nr_keep + i] = XFS_IEXT_KEY_INVALID;
476 node->ptrs[nr_keep + i] = NULL;
499 struct xfs_iext_node *node, *new;
507 node = xfs_iext_find_level(ifp, offset, level);
508 pos = xfs_iext_node_insert_pos(node, offset);
509 nr_entries = xfs_iext_node_nr_entries(node, pos);
511 ASSERT(pos >= nr_entries || xfs_iext_key_cmp(node, pos, offset) != 0);
515 new = xfs_iext_split_node(&node, &pos, &nr_entries);
519 * in an existing node.
521 if (node != new && pos == 0 && nr_entries > 0)
522 xfs_iext_update_node(ifp, node->keys[0], offset, level, node);
525 node->keys[i] = node->keys[i - 1];
526 node->ptrs[i] = node->ptrs[i - 1];
528 node->keys[pos] = offset;
529 node->ptrs[pos] = ptr;
550 /* for sequential append operations just spill over into the new node */
589 /* now that we have a node step into it */
653 * in an existing node.
675 struct xfs_iext_node *node,
680 * parents, we might never be able to merge our node, and will only
684 return node;
692 prev->keys[nr_prev + i] = node->keys[i];
693 prev->ptrs[nr_prev + i] = node->ptrs[i];
695 return node;
705 * Merge the next node into this node so that we don't
710 node->keys[nr_entries + i] = next->keys[i];
711 node->ptrs[nr_entries + i] = next->ptrs[i];
728 struct xfs_iext_node *node, *parent;
732 node = xfs_iext_find_level(ifp, offset, level);
733 pos = xfs_iext_node_pos(node, offset);
735 ASSERT(node->ptrs[pos]);
736 ASSERT(node->ptrs[pos] == victim);
739 nr_entries = xfs_iext_node_nr_entries(node, pos) - 1;
740 offset = node->keys[0];
742 node->keys[i] = node->keys[i + 1];
743 node->ptrs[i] = node->ptrs[i + 1];
745 node->keys[nr_entries] = XFS_IEXT_KEY_INVALID;
746 node->ptrs[nr_entries] = NULL;
749 xfs_iext_update_node(ifp, offset, node->keys[0], level, node);
750 offset = node->keys[0];
758 * If we aren't at the root yet try to find a neighbour node to
759 * merge with (or delete the node if it is empty), and then
767 ASSERT(parent->ptrs[pos] == node);
769 node = xfs_iext_rebalance_node(parent, &pos, node, nr_entries);
770 if (node) {
771 victim = node;
772 node = parent;
778 * free this node and update the root pointer.
780 ASSERT(node == ifp->if_u1.if_root);
781 ifp->if_u1.if_root = node->ptrs[0];
783 kmem_free(node);
797 * to merge our node, and will only delete it once the number of
823 * Merge the next node into this node so that we don't
943 /* Try looking in the next node for an entry > offset */
1025 struct xfs_iext_node *node,
1032 if (node->keys[i] == XFS_IEXT_KEY_INVALID)
1034 xfs_iext_destroy_node(node->ptrs[i], level - 1);
1038 kmem_free(node);