Lines Matching refs:cur

60 	struct xfs_btree_cur		*cur,
63 ASSERT(!(cur->bc_flags & XFS_BTREE_STAGING));
64 ASSERT(cur->bc_ops->type != XFS_BTREE_TYPE_INODE);
65 ASSERT(cur->bc_tp == NULL);
67 cur->bc_ag.afake = afake;
68 cur->bc_nlevels = afake->af_levels;
69 cur->bc_flags |= XFS_BTREE_STAGING;
80 struct xfs_btree_cur *cur,
84 ASSERT(cur->bc_flags & XFS_BTREE_STAGING);
85 ASSERT(cur->bc_tp == NULL);
87 trace_xfs_btree_commit_afakeroot(cur);
89 cur->bc_ag.afake = NULL;
90 cur->bc_ag.agbp = agbp;
91 cur->bc_flags &= ~XFS_BTREE_STAGING;
92 cur->bc_tp = tp;
127 struct xfs_btree_cur *cur,
130 ASSERT(!(cur->bc_flags & XFS_BTREE_STAGING));
131 ASSERT(cur->bc_ops->type == XFS_BTREE_TYPE_INODE);
132 ASSERT(cur->bc_tp == NULL);
134 cur->bc_ino.ifake = ifake;
135 cur->bc_nlevels = ifake->if_levels;
136 cur->bc_ino.forksize = ifake->if_fork_size;
137 cur->bc_flags |= XFS_BTREE_STAGING;
148 struct xfs_btree_cur *cur,
152 ASSERT(cur->bc_flags & XFS_BTREE_STAGING);
153 ASSERT(cur->bc_tp == NULL);
155 trace_xfs_btree_commit_ifakeroot(cur);
157 cur->bc_ino.ifake = NULL;
158 cur->bc_ino.whichfork = whichfork;
159 cur->bc_flags &= ~XFS_BTREE_STAGING;
160 cur->bc_tp = tp;
283 struct xfs_btree_cur *cur,
298 if (xfs_btree_at_iroot(cur, level)) {
299 struct xfs_ifork *ifp = xfs_btree_ifork_ptr(cur);
305 new_size = bbl->iroot_size(cur, level, nr_this_block, priv);
310 xfs_btree_init_block(cur->bc_mp, ifp->if_broot, cur->bc_ops,
311 level, nr_this_block, cur->bc_ino.ip->i_ino);
315 xfs_btree_set_ptr_null(cur, ptrp);
320 xfs_btree_set_ptr_null(cur, &new_ptr);
321 ret = bbl->claim_block(cur, &new_ptr, priv);
325 ASSERT(!xfs_btree_ptr_is_null(cur, &new_ptr));
327 ret = xfs_btree_get_buf_block(cur, &new_ptr, &new_block, &new_bp);
336 xfs_btree_set_sibling(cur, *blockp, &new_ptr, XFS_BB_RIGHTSIB);
343 xfs_btree_init_block_cur(cur, new_bp, level, nr_this_block);
344 xfs_btree_set_sibling(cur, new_block, ptrp, XFS_BB_LEFTSIB);
349 xfs_btree_copy_ptrs(cur, ptrp, &new_ptr, 1);
356 struct xfs_btree_cur *cur,
367 ret = get_records(cur, j, block, recs_this_block - j + 1, priv);
386 struct xfs_btree_cur *cur,
402 ASSERT(!xfs_btree_ptr_is_null(cur, child_ptr));
409 ret = xfs_btree_read_buf_block(cur, child_ptr, 0, &child_block,
414 block_ptr = xfs_btree_ptr_addr(cur, j, block);
415 xfs_btree_copy_ptrs(cur, block_ptr, child_ptr, 1);
417 block_key = xfs_btree_key_addr(cur, j, block);
418 xfs_btree_get_keys(cur, child_block, &child_key);
419 xfs_btree_copy_keys(cur, block_key, &child_key, 1);
421 xfs_btree_get_sibling(cur, child_block, child_ptr,
432 * @cur->bc_ino.forksize to the desired fork size, if appropriate.
436 struct xfs_btree_cur *cur,
442 if (level == cur->bc_nlevels - 1 && cur->bc_ops->get_dmaxrecs)
443 return cur->bc_ops->get_dmaxrecs(cur, level);
445 ret = cur->bc_ops->get_maxrecs(cur, level);
460 struct xfs_btree_cur *cur,
464 unsigned int npb = xfs_btree_bload_max_npb(cur, bbl, level);
467 if (level == cur->bc_nlevels - 1)
470 return max_t(unsigned int, cur->bc_ops->get_minrecs(cur, level), npb);
481 struct xfs_btree_cur *cur,
498 if (cur->bc_ops->get_dmaxrecs)
499 maxnr = cur->bc_ops->get_dmaxrecs(cur, level);
501 maxnr = cur->bc_ops->get_maxrecs(cur, level);
510 desired_npb = xfs_btree_bload_desired_npb(cur, bbl, level);
530 trace_xfs_btree_bload_level_geometry(cur, level, nr_this_level,
544 struct xfs_btree_cur *cur,
551 maxr = cur->bc_ops->get_maxrecs(cur, level);
552 minr = cur->bc_ops->get_minrecs(cur, level);
572 struct xfs_btree_cur *cur,
579 ASSERT(cur->bc_flags & XFS_BTREE_STAGING);
588 cur->bc_nlevels = cur->bc_maxlevels - 1;
589 xfs_btree_bload_ensure_slack(cur, &bbl->leaf_slack, 0);
590 xfs_btree_bload_ensure_slack(cur, &bbl->node_slack, 1);
593 for (cur->bc_nlevels = 1; cur->bc_nlevels <= cur->bc_maxlevels;) {
596 unsigned int level = cur->bc_nlevels - 1;
599 xfs_btree_bload_level_geometry(cur, bbl, level, nr_this_level,
602 if (cur->bc_ops->type == XFS_BTREE_TYPE_INODE) {
633 cur->bc_nlevels++;
634 ASSERT(cur->bc_nlevels <= cur->bc_maxlevels);
635 xfs_btree_bload_level_geometry(cur, bbl, level,
649 cur->bc_nlevels++;
650 ASSERT(cur->bc_nlevels <= cur->bc_maxlevels);
657 if (cur->bc_nlevels > cur->bc_maxlevels)
660 bbl->btree_height = cur->bc_nlevels;
661 if (cur->bc_ops->type == XFS_BTREE_TYPE_INODE)
671 struct xfs_btree_cur *cur,
689 ASSERT(cur->bc_flags & XFS_BTREE_STAGING);
692 cur->bc_nlevels = bbl->btree_height;
693 xfs_btree_set_ptr_null(cur, &child_ptr);
694 xfs_btree_set_ptr_null(cur, &ptr);
697 xfs_btree_bload_level_geometry(cur, bbl, level, nr_this_level,
713 ret = xfs_btree_bload_prep_block(cur, bbl, &buffers_list, level,
718 trace_xfs_btree_bload_block(cur, level, i, blocks, &ptr,
721 ret = xfs_btree_bload_leaf(cur, nr_this_block, bbl->get_records,
731 xfs_btree_copy_ptrs(cur, &child_ptr, &ptr, 1);
740 for (level = 1; level < cur->bc_nlevels; level++) {
745 xfs_btree_set_ptr_null(cur, &ptr);
747 xfs_btree_bload_level_geometry(cur, bbl, level, nr_this_level,
757 ret = xfs_btree_bload_prep_block(cur, bbl,
763 trace_xfs_btree_bload_block(cur, level, i, blocks,
766 ret = xfs_btree_bload_node(cur, nr_this_block,
776 xfs_btree_copy_ptrs(cur, &first_ptr, &ptr, 1);
784 xfs_btree_copy_ptrs(cur, &child_ptr, &first_ptr, 1);
788 if (cur->bc_ops->type == XFS_BTREE_TYPE_INODE) {
789 ASSERT(xfs_btree_ptr_is_null(cur, &ptr));
790 cur->bc_ino.ifake->if_levels = cur->bc_nlevels;
791 cur->bc_ino.ifake->if_blocks = total_blocks - 1;
793 cur->bc_ag.afake->af_root = be32_to_cpu(ptr.s);
794 cur->bc_ag.afake->af_levels = cur->bc_nlevels;
795 cur->bc_ag.afake->af_blocks = total_blocks;