Lines Matching refs:acur
946 struct xfs_alloc_cur *acur) in xfs_alloc_cur_setup() argument
951 acur->cur_len = args->maxlen; in xfs_alloc_cur_setup()
952 acur->rec_bno = 0; in xfs_alloc_cur_setup()
953 acur->rec_len = 0; in xfs_alloc_cur_setup()
954 acur->bno = 0; in xfs_alloc_cur_setup()
955 acur->len = 0; in xfs_alloc_cur_setup()
956 acur->diff = -1; in xfs_alloc_cur_setup()
957 acur->busy = false; in xfs_alloc_cur_setup()
958 acur->busy_gen = 0; in xfs_alloc_cur_setup()
965 if (!acur->cnt) in xfs_alloc_cur_setup()
966 acur->cnt = xfs_cntbt_init_cursor(args->mp, args->tp, in xfs_alloc_cur_setup()
968 error = xfs_alloc_lookup_ge(acur->cnt, 0, args->maxlen, &i); in xfs_alloc_cur_setup()
975 if (!acur->bnolt) in xfs_alloc_cur_setup()
976 acur->bnolt = xfs_bnobt_init_cursor(args->mp, args->tp, in xfs_alloc_cur_setup()
978 if (!acur->bnogt) in xfs_alloc_cur_setup()
979 acur->bnogt = xfs_bnobt_init_cursor(args->mp, args->tp, in xfs_alloc_cur_setup()
986 struct xfs_alloc_cur *acur, in xfs_alloc_cur_close() argument
994 if (acur->cnt) in xfs_alloc_cur_close()
995 xfs_btree_del_cursor(acur->cnt, cur_error); in xfs_alloc_cur_close()
996 if (acur->bnolt) in xfs_alloc_cur_close()
997 xfs_btree_del_cursor(acur->bnolt, cur_error); in xfs_alloc_cur_close()
998 if (acur->bnogt) in xfs_alloc_cur_close()
999 xfs_btree_del_cursor(acur->bnogt, cur_error); in xfs_alloc_cur_close()
1000 acur->cnt = acur->bnolt = acur->bnogt = NULL; in xfs_alloc_cur_close()
1012 struct xfs_alloc_cur *acur, in xfs_alloc_cur_check() argument
1045 acur->busy |= busy; in xfs_alloc_cur_check()
1047 acur->busy_gen = busy_gen; in xfs_alloc_cur_check()
1059 if (args->len < acur->len) in xfs_alloc_cur_check()
1075 if (diff > acur->diff) { in xfs_alloc_cur_check()
1080 ASSERT(args->len > acur->len || in xfs_alloc_cur_check()
1081 (args->len == acur->len && diff <= acur->diff)); in xfs_alloc_cur_check()
1082 acur->rec_bno = bno; in xfs_alloc_cur_check()
1083 acur->rec_len = len; in xfs_alloc_cur_check()
1084 acur->bno = bnew; in xfs_alloc_cur_check()
1085 acur->len = args->len; in xfs_alloc_cur_check()
1086 acur->diff = diff; in xfs_alloc_cur_check()
1094 if (acur->diff == 0 && acur->len == args->maxlen) in xfs_alloc_cur_check()
1110 struct xfs_alloc_cur *acur) in xfs_alloc_cur_finish() argument
1114 ASSERT(acur->cnt && acur->bnolt); in xfs_alloc_cur_finish()
1115 ASSERT(acur->bno >= acur->rec_bno); in xfs_alloc_cur_finish()
1116 ASSERT(acur->bno + acur->len <= acur->rec_bno + acur->rec_len); in xfs_alloc_cur_finish()
1117 ASSERT(xfs_verify_agbext(args->pag, acur->rec_bno, acur->rec_len)); in xfs_alloc_cur_finish()
1119 error = xfs_alloc_fixup_trees(acur->cnt, acur->bnolt, acur->rec_bno, in xfs_alloc_cur_finish()
1120 acur->rec_len, acur->bno, acur->len, 0); in xfs_alloc_cur_finish()
1124 args->agbno = acur->bno; in xfs_alloc_cur_finish()
1125 args->len = acur->len; in xfs_alloc_cur_finish()
1139 struct xfs_alloc_cur *acur) in xfs_alloc_cntbt_iter() argument
1141 struct xfs_btree_cur *cur = acur->cnt; in xfs_alloc_cntbt_iter()
1151 cur_len = acur->cur_len; in xfs_alloc_cntbt_iter()
1162 error = xfs_alloc_cur_check(args, acur, cur, &i); in xfs_alloc_cntbt_iter()
1165 ASSERT(len >= acur->cur_len); in xfs_alloc_cntbt_iter()
1166 acur->cur_len = len; in xfs_alloc_cntbt_iter()
1179 if (!error && i && len == acur->cur_len) in xfs_alloc_cntbt_iter()
1180 error = xfs_alloc_cur_check(args, acur, cur, in xfs_alloc_cntbt_iter()
1194 if (!acur->len || acur->cur_len >= cur_len) in xfs_alloc_cntbt_iter()
1195 acur->cur_len++; in xfs_alloc_cntbt_iter()
1197 acur->cur_len = cur_len; in xfs_alloc_cntbt_iter()
1434 struct xfs_alloc_cur *acur, in xfs_alloc_walk_iter() argument
1452 error = xfs_alloc_cur_check(args, acur, cur, &i); in xfs_alloc_walk_iter()
1486 struct xfs_alloc_cur *acur, in xfs_alloc_ag_vextent_locality() argument
1494 ASSERT(acur->len == 0); in xfs_alloc_ag_vextent_locality()
1498 error = xfs_alloc_lookup_ge(acur->cnt, args->agbno, acur->cur_len, &i); in xfs_alloc_ag_vextent_locality()
1501 error = xfs_alloc_lookup_le(acur->bnolt, args->agbno, 0, &i); in xfs_alloc_ag_vextent_locality()
1504 error = xfs_alloc_lookup_ge(acur->bnogt, args->agbno, 0, &i); in xfs_alloc_ag_vextent_locality()
1530 while (xfs_alloc_cur_active(acur->bnolt) || in xfs_alloc_ag_vextent_locality()
1531 xfs_alloc_cur_active(acur->bnogt) || in xfs_alloc_ag_vextent_locality()
1532 xfs_alloc_cur_active(acur->cnt)) { in xfs_alloc_ag_vextent_locality()
1540 error = xfs_alloc_walk_iter(args, acur, acur->bnolt, false, in xfs_alloc_ag_vextent_locality()
1546 fbcur = acur->bnogt; in xfs_alloc_ag_vextent_locality()
1550 error = xfs_alloc_walk_iter(args, acur, acur->bnogt, true, true, in xfs_alloc_ag_vextent_locality()
1556 fbcur = acur->bnolt; in xfs_alloc_ag_vextent_locality()
1565 error = xfs_alloc_cntbt_iter(args, acur); in xfs_alloc_ag_vextent_locality()
1568 if (!xfs_alloc_cur_active(acur->cnt)) { in xfs_alloc_ag_vextent_locality()
1579 if (!xfs_alloc_cur_active(acur->cnt) && !acur->len && !acur->busy) { in xfs_alloc_ag_vextent_locality()
1580 error = xfs_btree_decrement(acur->cnt, 0, &i); in xfs_alloc_ag_vextent_locality()
1584 acur->cnt->bc_flags |= XFS_BTREE_ALLOCBT_ACTIVE; in xfs_alloc_ag_vextent_locality()
1585 fbcur = acur->cnt; in xfs_alloc_ag_vextent_locality()
1595 error = xfs_alloc_walk_iter(args, acur, fbcur, fbinc, true, -1, in xfs_alloc_ag_vextent_locality()
1601 if (acur->len) in xfs_alloc_ag_vextent_locality()
1611 struct xfs_alloc_cur *acur, in xfs_alloc_ag_vextent_lastblock() argument
1632 acur->cnt->bc_levels[0].ptr = 1; in xfs_alloc_ag_vextent_lastblock()
1634 error = xfs_alloc_get_rec(acur->cnt, bno, len, &i); in xfs_alloc_ag_vextent_lastblock()
1638 xfs_btree_mark_sick(acur->cnt); in xfs_alloc_ag_vextent_lastblock()
1643 error = xfs_btree_increment(acur->cnt, 0, &i); in xfs_alloc_ag_vextent_lastblock()
1652 error = xfs_alloc_walk_iter(args, acur, acur->cnt, true, false, -1, &i); in xfs_alloc_ag_vextent_lastblock()
1660 if (acur->len == 0) in xfs_alloc_ag_vextent_lastblock()
1679 struct xfs_alloc_cur acur = {}; in xfs_alloc_ag_vextent_near() local
1706 error = xfs_alloc_cur_setup(args, &acur); in xfs_alloc_ag_vextent_near()
1708 error = xfs_alloc_ag_vextent_small(args, acur.cnt, &bno, in xfs_alloc_ag_vextent_near()
1729 if (xfs_btree_islastblock(acur.cnt, 0)) { in xfs_alloc_ag_vextent_near()
1732 error = xfs_alloc_ag_vextent_lastblock(args, &acur, &bno, &len, in xfs_alloc_ag_vextent_near()
1744 error = xfs_alloc_ag_vextent_locality(args, &acur, &i); in xfs_alloc_ag_vextent_near()
1751 if (!acur.len) { in xfs_alloc_ag_vextent_near()
1752 if (acur.busy) { in xfs_alloc_ag_vextent_near()
1762 acur.busy_gen, alloc_flags); in xfs_alloc_ag_vextent_near()
1776 error = xfs_alloc_cur_finish(args, &acur); in xfs_alloc_ag_vextent_near()
1779 xfs_alloc_cur_close(&acur, error); in xfs_alloc_ag_vextent_near()