Lines Matching refs:acur
757 struct xfs_alloc_cur *acur) in xfs_alloc_cur_setup() argument
764 acur->cur_len = args->maxlen; in xfs_alloc_cur_setup()
765 acur->rec_bno = 0; in xfs_alloc_cur_setup()
766 acur->rec_len = 0; in xfs_alloc_cur_setup()
767 acur->bno = 0; in xfs_alloc_cur_setup()
768 acur->len = 0; in xfs_alloc_cur_setup()
769 acur->diff = -1; in xfs_alloc_cur_setup()
770 acur->busy = false; in xfs_alloc_cur_setup()
771 acur->busy_gen = 0; in xfs_alloc_cur_setup()
778 if (!acur->cnt) in xfs_alloc_cur_setup()
779 acur->cnt = xfs_allocbt_init_cursor(args->mp, args->tp, in xfs_alloc_cur_setup()
781 error = xfs_alloc_lookup_ge(acur->cnt, 0, args->maxlen, &i); in xfs_alloc_cur_setup()
788 if (!acur->bnolt) in xfs_alloc_cur_setup()
789 acur->bnolt = xfs_allocbt_init_cursor(args->mp, args->tp, in xfs_alloc_cur_setup()
791 if (!acur->bnogt) in xfs_alloc_cur_setup()
792 acur->bnogt = xfs_allocbt_init_cursor(args->mp, args->tp, in xfs_alloc_cur_setup()
799 struct xfs_alloc_cur *acur, in xfs_alloc_cur_close() argument
807 if (acur->cnt) in xfs_alloc_cur_close()
808 xfs_btree_del_cursor(acur->cnt, cur_error); in xfs_alloc_cur_close()
809 if (acur->bnolt) in xfs_alloc_cur_close()
810 xfs_btree_del_cursor(acur->bnolt, cur_error); in xfs_alloc_cur_close()
811 if (acur->bnogt) in xfs_alloc_cur_close()
812 xfs_btree_del_cursor(acur->bnogt, cur_error); in xfs_alloc_cur_close()
813 acur->cnt = acur->bnolt = acur->bnogt = NULL; in xfs_alloc_cur_close()
825 struct xfs_alloc_cur *acur, in xfs_alloc_cur_check() argument
856 acur->busy |= busy; in xfs_alloc_cur_check()
858 acur->busy_gen = busy_gen; in xfs_alloc_cur_check()
870 if (args->len < acur->len) in xfs_alloc_cur_check()
887 if (diff > acur->diff) { in xfs_alloc_cur_check()
892 ASSERT(args->len > acur->len || in xfs_alloc_cur_check()
893 (args->len == acur->len && diff <= acur->diff)); in xfs_alloc_cur_check()
894 acur->rec_bno = bno; in xfs_alloc_cur_check()
895 acur->rec_len = len; in xfs_alloc_cur_check()
896 acur->bno = bnew; in xfs_alloc_cur_check()
897 acur->len = args->len; in xfs_alloc_cur_check()
898 acur->diff = diff; in xfs_alloc_cur_check()
906 if (acur->diff == 0 && acur->len == args->maxlen) in xfs_alloc_cur_check()
923 struct xfs_alloc_cur *acur) in xfs_alloc_cur_finish() argument
928 ASSERT(acur->cnt && acur->bnolt); in xfs_alloc_cur_finish()
929 ASSERT(acur->bno >= acur->rec_bno); in xfs_alloc_cur_finish()
930 ASSERT(acur->bno + acur->len <= acur->rec_bno + acur->rec_len); in xfs_alloc_cur_finish()
931 ASSERT(acur->rec_bno + acur->rec_len <= be32_to_cpu(agf->agf_length)); in xfs_alloc_cur_finish()
933 error = xfs_alloc_fixup_trees(acur->cnt, acur->bnolt, acur->rec_bno, in xfs_alloc_cur_finish()
934 acur->rec_len, acur->bno, acur->len, 0); in xfs_alloc_cur_finish()
938 args->agbno = acur->bno; in xfs_alloc_cur_finish()
939 args->len = acur->len; in xfs_alloc_cur_finish()
953 struct xfs_alloc_cur *acur) in xfs_alloc_cntbt_iter() argument
955 struct xfs_btree_cur *cur = acur->cnt; in xfs_alloc_cntbt_iter()
965 cur_len = acur->cur_len; in xfs_alloc_cntbt_iter()
976 error = xfs_alloc_cur_check(args, acur, cur, &i); in xfs_alloc_cntbt_iter()
979 ASSERT(len >= acur->cur_len); in xfs_alloc_cntbt_iter()
980 acur->cur_len = len; in xfs_alloc_cntbt_iter()
993 if (!error && i && len == acur->cur_len) in xfs_alloc_cntbt_iter()
994 error = xfs_alloc_cur_check(args, acur, cur, in xfs_alloc_cntbt_iter()
1008 if (!acur->len || acur->cur_len >= cur_len) in xfs_alloc_cntbt_iter()
1009 acur->cur_len++; in xfs_alloc_cntbt_iter()
1011 acur->cur_len = cur_len; in xfs_alloc_cntbt_iter()
1317 struct xfs_alloc_cur *acur, in xfs_alloc_walk_iter() argument
1335 error = xfs_alloc_cur_check(args, acur, cur, &i); in xfs_alloc_walk_iter()
1369 struct xfs_alloc_cur *acur, in xfs_alloc_ag_vextent_locality() argument
1377 ASSERT(acur->len == 0); in xfs_alloc_ag_vextent_locality()
1382 error = xfs_alloc_lookup_ge(acur->cnt, args->agbno, acur->cur_len, &i); in xfs_alloc_ag_vextent_locality()
1385 error = xfs_alloc_lookup_le(acur->bnolt, args->agbno, 0, &i); in xfs_alloc_ag_vextent_locality()
1388 error = xfs_alloc_lookup_ge(acur->bnogt, args->agbno, 0, &i); in xfs_alloc_ag_vextent_locality()
1414 while (xfs_alloc_cur_active(acur->bnolt) || in xfs_alloc_ag_vextent_locality()
1415 xfs_alloc_cur_active(acur->bnogt) || in xfs_alloc_ag_vextent_locality()
1416 xfs_alloc_cur_active(acur->cnt)) { in xfs_alloc_ag_vextent_locality()
1424 error = xfs_alloc_walk_iter(args, acur, acur->bnolt, false, in xfs_alloc_ag_vextent_locality()
1430 fbcur = acur->bnogt; in xfs_alloc_ag_vextent_locality()
1434 error = xfs_alloc_walk_iter(args, acur, acur->bnogt, true, true, in xfs_alloc_ag_vextent_locality()
1440 fbcur = acur->bnolt; in xfs_alloc_ag_vextent_locality()
1449 error = xfs_alloc_cntbt_iter(args, acur); in xfs_alloc_ag_vextent_locality()
1452 if (!xfs_alloc_cur_active(acur->cnt)) { in xfs_alloc_ag_vextent_locality()
1463 if (!xfs_alloc_cur_active(acur->cnt) && !acur->len && !acur->busy) { in xfs_alloc_ag_vextent_locality()
1464 error = xfs_btree_decrement(acur->cnt, 0, &i); in xfs_alloc_ag_vextent_locality()
1468 acur->cnt->bc_ag.abt.active = true; in xfs_alloc_ag_vextent_locality()
1469 fbcur = acur->cnt; in xfs_alloc_ag_vextent_locality()
1479 error = xfs_alloc_walk_iter(args, acur, fbcur, fbinc, true, -1, in xfs_alloc_ag_vextent_locality()
1485 if (acur->len) in xfs_alloc_ag_vextent_locality()
1495 struct xfs_alloc_cur *acur, in xfs_alloc_ag_vextent_lastblock() argument
1516 acur->cnt->bc_ptrs[0] = 1; in xfs_alloc_ag_vextent_lastblock()
1518 error = xfs_alloc_get_rec(acur->cnt, bno, len, &i); in xfs_alloc_ag_vextent_lastblock()
1525 error = xfs_btree_increment(acur->cnt, 0, &i); in xfs_alloc_ag_vextent_lastblock()
1534 error = xfs_alloc_walk_iter(args, acur, acur->cnt, true, false, -1, &i); in xfs_alloc_ag_vextent_lastblock()
1542 if (acur->len == 0) in xfs_alloc_ag_vextent_lastblock()
1560 struct xfs_alloc_cur acur = {}; in xfs_alloc_ag_vextent_near() local
1585 error = xfs_alloc_cur_setup(args, &acur); in xfs_alloc_ag_vextent_near()
1587 error = xfs_alloc_ag_vextent_small(args, acur.cnt, &bno, in xfs_alloc_ag_vextent_near()
1608 if (xfs_btree_islastblock(acur.cnt, 0)) { in xfs_alloc_ag_vextent_near()
1611 error = xfs_alloc_ag_vextent_lastblock(args, &acur, &bno, &len, in xfs_alloc_ag_vextent_near()
1623 error = xfs_alloc_ag_vextent_locality(args, &acur, &i); in xfs_alloc_ag_vextent_near()
1630 if (!acur.len) { in xfs_alloc_ag_vextent_near()
1631 if (acur.busy) { in xfs_alloc_ag_vextent_near()
1634 acur.busy_gen); in xfs_alloc_ag_vextent_near()
1644 error = xfs_alloc_cur_finish(args, &acur); in xfs_alloc_ag_vextent_near()
1647 xfs_alloc_cur_close(&acur, error); in xfs_alloc_ag_vextent_near()