Lines Matching full:leaf

98  * There are two types of blocks in the btree: leaf and inner (non-leaf) blocks.
100 * The leaf blocks are made up by %KEYS_PER_NODE extent records, which each
103 * leaf blocks (if there are any).
105 * The inner (non-leaf) blocks first contain KEYS_PER_NODE lookup keys, followed
109 * Leaf: | rec 1 | rec 2 | rec 3 | rec 4 | rec N | prev-ptr | next-ptr |
142 return &cur->leaf->recs[cur->pos]; in cur_rec()
148 if (!cur->leaf) in xfs_iext_valid()
202 cur->leaf = xfs_iext_find_first_leaf(ifp); in xfs_iext_first()
212 cur->leaf = xfs_iext_find_last_leaf(ifp); in xfs_iext_last()
213 if (!cur->leaf) { in xfs_iext_last()
219 if (xfs_iext_rec_is_empty(&cur->leaf->recs[i])) in xfs_iext_last()
230 if (!cur->leaf) { in xfs_iext_next()
241 cur->leaf->next) { in xfs_iext_next()
242 cur->leaf = cur->leaf->next; in xfs_iext_next()
252 if (!cur->leaf) { in xfs_iext_prev()
268 if (ifp->if_height > 1 && cur->leaf->prev) { in xfs_iext_prev()
269 cur->leaf = cur->leaf->prev; in xfs_iext_prev()
376 struct xfs_iext_leaf *leaf, in xfs_iext_leaf_nr_entries() argument
382 if (xfs_iext_rec_is_empty(&leaf->recs[i])) in xfs_iext_leaf_nr_entries()
391 struct xfs_iext_leaf *leaf, in xfs_iext_leaf_key() argument
394 return leaf->recs[n].lo & XFS_IEXT_STARTOFF_MASK; in xfs_iext_leaf_key()
544 struct xfs_iext_leaf *leaf = cur->leaf; in xfs_iext_split_leaf() local
552 cur->leaf = new; in xfs_iext_split_leaf()
559 new->recs[i] = leaf->recs[nr_keep + i]; in xfs_iext_split_leaf()
560 xfs_iext_rec_clear(&leaf->recs[nr_keep + i]); in xfs_iext_split_leaf()
564 cur->leaf = new; in xfs_iext_split_leaf()
571 if (leaf->next) in xfs_iext_split_leaf()
572 leaf->next->prev = new; in xfs_iext_split_leaf()
573 new->next = leaf->next; in xfs_iext_split_leaf()
574 new->prev = leaf; in xfs_iext_split_leaf()
575 leaf->next = new; in xfs_iext_split_leaf()
590 cur->leaf = ifp->if_data; in xfs_iext_alloc_root()
609 cur->leaf = new; in xfs_iext_realloc_root()
641 nr_entries = xfs_iext_leaf_nr_entries(ifp, cur->leaf, cur->pos); in xfs_iext_insert_raw()
653 if (cur->leaf != new && cur->pos == 0 && nr_entries > 0) { in xfs_iext_insert_raw()
654 xfs_iext_update_node(ifp, xfs_iext_leaf_key(cur->leaf, 0), in xfs_iext_insert_raw()
655 offset, 1, cur->leaf); in xfs_iext_insert_raw()
659 cur->leaf->recs[i] = cur->leaf->recs[i - 1]; in xfs_iext_insert_raw()
800 struct xfs_iext_leaf *leaf, in xfs_iext_rebalance_leaf() argument
812 if (leaf->prev) { in xfs_iext_rebalance_leaf()
813 int nr_prev = xfs_iext_leaf_nr_entries(ifp, leaf->prev, 0), i; in xfs_iext_rebalance_leaf()
817 leaf->prev->recs[nr_prev + i] = leaf->recs[i]; in xfs_iext_rebalance_leaf()
819 if (cur->leaf == leaf) { in xfs_iext_rebalance_leaf()
820 cur->leaf = leaf->prev; in xfs_iext_rebalance_leaf()
827 if (leaf->next) { in xfs_iext_rebalance_leaf()
828 int nr_next = xfs_iext_leaf_nr_entries(ifp, leaf->next, 0), i; in xfs_iext_rebalance_leaf()
837 leaf->recs[nr_entries + i] = in xfs_iext_rebalance_leaf()
838 leaf->next->recs[i]; in xfs_iext_rebalance_leaf()
841 if (cur->leaf == leaf->next) { in xfs_iext_rebalance_leaf()
842 cur->leaf = leaf; in xfs_iext_rebalance_leaf()
846 offset = xfs_iext_leaf_key(leaf->next, 0); in xfs_iext_rebalance_leaf()
847 leaf = leaf->next; in xfs_iext_rebalance_leaf()
854 if (leaf->prev) in xfs_iext_rebalance_leaf()
855 leaf->prev->next = leaf->next; in xfs_iext_rebalance_leaf()
856 if (leaf->next) in xfs_iext_rebalance_leaf()
857 leaf->next->prev = leaf->prev; in xfs_iext_rebalance_leaf()
858 xfs_iext_remove_node(ifp, offset, leaf); in xfs_iext_rebalance_leaf()
877 struct xfs_iext_leaf *leaf = cur->leaf; in xfs_iext_remove() local
878 xfs_fileoff_t offset = xfs_iext_leaf_key(leaf, 0); in xfs_iext_remove()
889 nr_entries = xfs_iext_leaf_nr_entries(ifp, leaf, cur->pos) - 1; in xfs_iext_remove()
891 leaf->recs[i] = leaf->recs[i + 1]; in xfs_iext_remove()
892 xfs_iext_rec_clear(&leaf->recs[nr_entries]); in xfs_iext_remove()
896 xfs_iext_update_node(ifp, offset, xfs_iext_leaf_key(leaf, 0), 1, in xfs_iext_remove()
897 leaf); in xfs_iext_remove()
898 offset = xfs_iext_leaf_key(leaf, 0); in xfs_iext_remove()
900 if (ifp->if_height > 1 && leaf->next) in xfs_iext_remove()
901 cur->leaf = leaf->next; in xfs_iext_remove()
903 cur->leaf = NULL; in xfs_iext_remove()
911 xfs_iext_rebalance_leaf(ifp, cur, leaf, offset, nr_entries); in xfs_iext_remove()
937 cur->leaf = xfs_iext_find_level(ifp, offset, 1); in xfs_iext_lookup_extent()
938 if (!cur->leaf) { in xfs_iext_lookup_extent()
953 if (ifp->if_height == 1 || !cur->leaf->next) in xfs_iext_lookup_extent()
955 cur->leaf = cur->leaf->next; in xfs_iext_lookup_extent()
1003 new->br_startoff, 1, cur->leaf); in xfs_iext_update_extent()