Lines Matching refs:cur

140 static inline struct xfs_iext_rec *cur_rec(struct xfs_iext_cursor *cur)
142 return &cur->leaf->recs[cur->pos];
146 struct xfs_iext_cursor *cur)
148 if (!cur->leaf)
150 if (cur->pos < 0 || cur->pos >= xfs_iext_max_recs(ifp))
152 if (xfs_iext_rec_is_empty(cur_rec(cur)))
199 struct xfs_iext_cursor *cur)
201 cur->pos = 0;
202 cur->leaf = xfs_iext_find_first_leaf(ifp);
208 struct xfs_iext_cursor *cur)
212 cur->leaf = xfs_iext_find_last_leaf(ifp);
213 if (!cur->leaf) {
214 cur->pos = 0;
219 if (xfs_iext_rec_is_empty(&cur->leaf->recs[i]))
222 cur->pos = i - 1;
228 struct xfs_iext_cursor *cur)
230 if (!cur->leaf) {
231 ASSERT(cur->pos <= 0 || cur->pos >= RECS_PER_LEAF);
232 xfs_iext_first(ifp, cur);
236 ASSERT(cur->pos >= 0);
237 ASSERT(cur->pos < xfs_iext_max_recs(ifp));
239 cur->pos++;
240 if (ifp->if_height > 1 && !xfs_iext_valid(ifp, cur) &&
241 cur->leaf->next) {
242 cur->leaf = cur->leaf->next;
243 cur->pos = 0;
250 struct xfs_iext_cursor *cur)
252 if (!cur->leaf) {
253 ASSERT(cur->pos <= 0 || cur->pos >= RECS_PER_LEAF);
254 xfs_iext_last(ifp, cur);
258 ASSERT(cur->pos >= 0);
259 ASSERT(cur->pos <= RECS_PER_LEAF);
263 cur->pos--;
264 if (xfs_iext_valid(ifp, cur))
266 } while (cur->pos > 0);
268 if (ifp->if_height > 1 && cur->leaf->prev) {
269 cur->leaf = cur->leaf->prev;
270 cur->pos = RECS_PER_LEAF;
541 struct xfs_iext_cursor *cur,
544 struct xfs_iext_leaf *leaf = cur->leaf;
551 if (cur->pos == RECS_PER_LEAF) {
552 cur->leaf = new;
553 cur->pos = 0;
563 if (cur->pos >= nr_keep) {
564 cur->leaf = new;
565 cur->pos -= nr_keep;
582 struct xfs_iext_cursor *cur)
590 cur->leaf = ifp->if_u1.if_root;
591 cur->pos = 0;
597 struct xfs_iext_cursor *cur)
609 cur->leaf = new;
627 struct xfs_iext_cursor *cur,
639 xfs_iext_alloc_root(ifp, cur);
641 xfs_iext_realloc_root(ifp, cur);
643 nr_entries = xfs_iext_leaf_nr_entries(ifp, cur->leaf, cur->pos);
645 ASSERT(cur->pos >= nr_entries ||
646 xfs_iext_rec_cmp(cur_rec(cur), irec->br_startoff) != 0);
649 new = xfs_iext_split_leaf(cur, &nr_entries);
655 if (cur->leaf != new && cur->pos == 0 && nr_entries > 0) {
656 xfs_iext_update_node(ifp, xfs_iext_leaf_key(cur->leaf, 0),
657 offset, 1, cur->leaf);
660 for (i = nr_entries; i > cur->pos; i--)
661 cur->leaf->recs[i] = cur->leaf->recs[i - 1];
662 xfs_iext_set(cur_rec(cur), irec);
665 trace_xfs_iext_insert(ip, cur, state, _RET_IP_);
790 struct xfs_iext_cursor *cur,
810 if (cur->leaf == leaf) {
811 cur->leaf = leaf->prev;
812 cur->pos += nr_prev;
832 if (cur->leaf == leaf->next) {
833 cur->leaf = leaf;
834 cur->pos += nr_entries;
864 struct xfs_iext_cursor *cur,
868 struct xfs_iext_leaf *leaf = cur->leaf;
872 trace_xfs_iext_remove(ip, cur, state, _RET_IP_);
876 ASSERT(xfs_iext_valid(ifp, cur));
880 nr_entries = xfs_iext_leaf_nr_entries(ifp, leaf, cur->pos) - 1;
881 for (i = cur->pos; i < nr_entries; i++)
886 if (cur->pos == 0 && nr_entries > 0) {
890 } else if (cur->pos == nr_entries) {
892 cur->leaf = leaf->next;
894 cur->leaf = NULL;
895 cur->pos = 0;
902 xfs_iext_rebalance_leaf(ifp, cur, leaf, offset, nr_entries);
911 * expanded extent structure in *gotp, and the extent cursor in *cur.
913 * it lies in a hole) return that extent in *gotp and its cursor in *cur
923 struct xfs_iext_cursor *cur,
928 cur->leaf = xfs_iext_find_level(ifp, offset, 1);
929 if (!cur->leaf) {
930 cur->pos = 0;
934 for (cur->pos = 0; cur->pos < xfs_iext_max_recs(ifp); cur->pos++) {
935 struct xfs_iext_rec *rec = cur_rec(cur);
944 if (ifp->if_height == 1 || !cur->leaf->next)
946 cur->leaf = cur->leaf->next;
947 cur->pos = 0;
948 if (!xfs_iext_valid(ifp, cur))
951 xfs_iext_get(gotp, cur_rec(cur));
964 struct xfs_iext_cursor *cur,
968 if (xfs_iext_lookup_extent(ip, ifp, *end - 1, cur, gotp) &&
971 if (!xfs_iext_prev_extent(ifp, cur, gotp))
981 struct xfs_iext_cursor *cur,
988 if (cur->pos == 0) {
991 xfs_iext_get(&old, cur_rec(cur));
994 new->br_startoff, 1, cur->leaf);
998 trace_xfs_bmap_pre_update(ip, cur, state, _RET_IP_);
999 xfs_iext_set(cur_rec(cur), new);
1000 trace_xfs_bmap_post_update(ip, cur, state, _RET_IP_);
1010 struct xfs_iext_cursor *cur,
1013 if (!xfs_iext_valid(ifp, cur))
1015 xfs_iext_get(gotp, cur_rec(cur));