Lines Matching refs:pag
252 struct xfs_perag *pag = cur->bc_ag.pag; in xfs_alloc_check_irec() local
258 if (!xfs_verify_agbext(pag, irec->ar_startblock, irec->ar_blockcount)) in xfs_alloc_check_irec()
275 cur->bc_ag.pag->pag_agno, fa); in xfs_alloc_complain_bad_rec()
460 ASSERT(args->pag->pagf_freeblks + args->pag->pagf_flcount >= in xfs_alloc_fix_len()
748 struct xfs_perag *pag, in xfs_alloc_read_agfl() argument
752 struct xfs_mount *mp = pag->pag_mount; in xfs_alloc_read_agfl()
758 XFS_AG_DADDR(mp, pag->pag_agno, XFS_AGFL_DADDR(mp)), in xfs_alloc_read_agfl()
834 args->agbp, args->pag, XFS_BTNUM_CNT); in xfs_alloc_cur_setup()
844 args->agbp, args->pag, XFS_BTNUM_BNO); in xfs_alloc_cur_setup()
847 args->agbp, args->pag, XFS_BTNUM_BNO); in xfs_alloc_cur_setup()
1114 error = xfs_alloc_get_freelist(args->pag, args->tp, args->agbp, in xfs_alloc_ag_vextent_small()
1121 xfs_extent_busy_reuse(args->mp, args->pag, fbno, 1, in xfs_alloc_ag_vextent_small()
1147 error = xfs_rmap_free(args->tp, args->agbp, args->pag, fbno, 1, in xfs_alloc_ag_vextent_small()
1203 args->pag, XFS_BTNUM_BNO); in xfs_alloc_ag_vextent_exact()
1263 args->pag, XFS_BTNUM_CNT); in xfs_alloc_ag_vextent_exact()
1624 error = xfs_extent_busy_flush(args->tp, args->pag, in xfs_alloc_ag_vextent_near()
1676 args->pag, XFS_BTNUM_CNT); in xfs_alloc_ag_vextent_size()
1739 error = xfs_extent_busy_flush(args->tp, args->pag, in xfs_alloc_ag_vextent_size()
1834 error = xfs_extent_busy_flush(args->tp, args->pag, in xfs_alloc_ag_vextent_size()
1856 args->pag, XFS_BTNUM_BNO); in xfs_alloc_ag_vextent_size()
1915 struct xfs_perag *pag = agbp->b_pag; in xfs_free_ag_extent() local
1921 error = xfs_rmap_free(tp, agbp, pag, bno, len, oinfo); in xfs_free_ag_extent()
1929 bno_cur = xfs_allocbt_init_cursor(mp, tp, agbp, pag, XFS_BTNUM_BNO); in xfs_free_ag_extent()
1999 cnt_cur = xfs_allocbt_init_cursor(mp, tp, agbp, pag, XFS_BTNUM_CNT); in xfs_free_ag_extent()
2229 struct xfs_perag *pag, in xfs_alloc_longest_free_extent() argument
2239 if (need > pag->pagf_flcount) in xfs_alloc_longest_free_extent()
2240 delta = need - pag->pagf_flcount; in xfs_alloc_longest_free_extent()
2247 if (pag->pagf_freeblks - pag->pagf_longest < reserved) in xfs_alloc_longest_free_extent()
2248 delta += reserved - (pag->pagf_freeblks - pag->pagf_longest); in xfs_alloc_longest_free_extent()
2254 if (pag->pagf_longest > delta) in xfs_alloc_longest_free_extent()
2255 return min_t(xfs_extlen_t, pag->pag_mount->m_ag_max_usable, in xfs_alloc_longest_free_extent()
2256 pag->pagf_longest - delta); in xfs_alloc_longest_free_extent()
2259 return pag->pagf_flcount > 0 || pag->pagf_longest > 0; in xfs_alloc_longest_free_extent()
2269 struct xfs_perag *pag) in xfs_alloc_min_freelist() argument
2273 const uint8_t *levels = pag ? pag->pagf_levels : fake_levels; in xfs_alloc_min_freelist()
2325 struct xfs_perag *pag = args->pag; in xfs_alloc_space_available() local
2334 reservation = xfs_ag_resv_needed(pag, args->resv); in xfs_alloc_space_available()
2338 longest = xfs_alloc_longest_free_extent(pag, min_free, reservation); in xfs_alloc_space_available()
2347 agflcount = min_t(xfs_extlen_t, pag->pagf_flcount, min_free); in xfs_alloc_space_available()
2348 available = (int)(pag->pagf_freeblks + agflcount - in xfs_alloc_space_available()
2456 struct xfs_perag *pag) in xfs_agfl_reset() argument
2461 ASSERT(xfs_perag_agfl_needs_reset(pag)); in xfs_agfl_reset()
2467 pag->pag_agno, pag->pagf_flcount); in xfs_agfl_reset()
2475 pag->pagf_flcount = 0; in xfs_agfl_reset()
2476 clear_bit(XFS_AGSTATE_AGFL_NEEDS_RESET, &pag->pag_opstate); in xfs_agfl_reset()
2600 args->pag, XFS_BTNUM_CNT); in xfs_exact_minlen_extent_available()
2633 struct xfs_perag *pag = args->pag; in xfs_alloc_fix_freelist() local
2645 if (!xfs_perag_initialised_agf(pag)) { in xfs_alloc_fix_freelist()
2646 error = xfs_alloc_read_agf(pag, tp, alloc_flags, &agbp); in xfs_alloc_fix_freelist()
2660 if (xfs_perag_prefers_metadata(pag) && in xfs_alloc_fix_freelist()
2667 need = xfs_alloc_min_freelist(mp, pag); in xfs_alloc_fix_freelist()
2677 error = xfs_alloc_read_agf(pag, tp, alloc_flags, &agbp); in xfs_alloc_fix_freelist()
2687 if (xfs_perag_agfl_needs_reset(pag)) in xfs_alloc_fix_freelist()
2688 xfs_agfl_reset(tp, agbp, pag); in xfs_alloc_fix_freelist()
2691 need = xfs_alloc_min_freelist(mp, pag); in xfs_alloc_fix_freelist()
2734 pag->pagf_flcount > need) { in xfs_alloc_fix_freelist()
2735 error = xfs_alloc_get_freelist(pag, tp, agbp, &bno, 0); in xfs_alloc_fix_freelist()
2750 targs.pag = pag; in xfs_alloc_fix_freelist()
2751 error = xfs_alloc_read_agfl(pag, tp, &agflbp); in xfs_alloc_fix_freelist()
2756 while (pag->pagf_flcount < need) { in xfs_alloc_fix_freelist()
2758 targs.maxlen = need - pag->pagf_flcount; in xfs_alloc_fix_freelist()
2778 error = xfs_rmap_alloc(tp, agbp, pag, in xfs_alloc_fix_freelist()
2792 error = xfs_alloc_put_freelist(pag, tp, agbp, in xfs_alloc_fix_freelist()
2818 struct xfs_perag *pag, in xfs_alloc_get_freelist() argument
2842 error = xfs_alloc_read_agfl(pag, tp, &agflbp); in xfs_alloc_get_freelist()
2852 if (XFS_IS_CORRUPT(tp->t_mountp, !xfs_verify_agbno(pag, bno))) in xfs_alloc_get_freelist()
2860 ASSERT(!xfs_perag_agfl_needs_reset(pag)); in xfs_alloc_get_freelist()
2862 pag->pagf_flcount--; in xfs_alloc_get_freelist()
2867 pag->pagf_btreeblks++; in xfs_alloc_get_freelist()
2924 struct xfs_perag *pag, in xfs_alloc_put_freelist() argument
2940 error = xfs_alloc_read_agfl(pag, tp, &agflbp); in xfs_alloc_put_freelist()
2949 ASSERT(!xfs_perag_agfl_needs_reset(pag)); in xfs_alloc_put_freelist()
2951 pag->pagf_flcount++; in xfs_alloc_put_freelist()
2956 pag->pagf_btreeblks--; in xfs_alloc_put_freelist()
3161 struct xfs_perag *pag, in xfs_read_agf() argument
3166 struct xfs_mount *mp = pag->pag_mount; in xfs_read_agf()
3169 trace_xfs_read_agf(pag->pag_mount, pag->pag_agno); in xfs_read_agf()
3172 XFS_AG_DADDR(mp, pag->pag_agno, XFS_AGF_DADDR(mp)), in xfs_read_agf()
3188 struct xfs_perag *pag, in xfs_alloc_read_agf() argument
3198 trace_xfs_alloc_read_agf(pag->pag_mount, pag->pag_agno); in xfs_alloc_read_agf()
3203 error = xfs_read_agf(pag, tp, in xfs_alloc_read_agf()
3210 if (!xfs_perag_initialised_agf(pag)) { in xfs_alloc_read_agf()
3211 pag->pagf_freeblks = be32_to_cpu(agf->agf_freeblks); in xfs_alloc_read_agf()
3212 pag->pagf_btreeblks = be32_to_cpu(agf->agf_btreeblks); in xfs_alloc_read_agf()
3213 pag->pagf_flcount = be32_to_cpu(agf->agf_flcount); in xfs_alloc_read_agf()
3214 pag->pagf_longest = be32_to_cpu(agf->agf_longest); in xfs_alloc_read_agf()
3215 pag->pagf_levels[XFS_BTNUM_BNOi] = in xfs_alloc_read_agf()
3217 pag->pagf_levels[XFS_BTNUM_CNTi] = in xfs_alloc_read_agf()
3219 pag->pagf_levels[XFS_BTNUM_RMAPi] = in xfs_alloc_read_agf()
3221 pag->pagf_refcount_level = be32_to_cpu(agf->agf_refcount_level); in xfs_alloc_read_agf()
3222 if (xfs_agfl_needs_reset(pag->pag_mount, agf)) in xfs_alloc_read_agf()
3223 set_bit(XFS_AGSTATE_AGFL_NEEDS_RESET, &pag->pag_opstate); in xfs_alloc_read_agf()
3225 clear_bit(XFS_AGSTATE_AGFL_NEEDS_RESET, &pag->pag_opstate); in xfs_alloc_read_agf()
3234 allocbt_blks = pag->pagf_btreeblks; in xfs_alloc_read_agf()
3235 if (xfs_has_rmapbt(pag->pag_mount)) in xfs_alloc_read_agf()
3239 &pag->pag_mount->m_allocbt_blks); in xfs_alloc_read_agf()
3241 set_bit(XFS_AGSTATE_AGF_INIT, &pag->pag_opstate); in xfs_alloc_read_agf()
3244 else if (!xfs_is_shutdown(pag->pag_mount)) { in xfs_alloc_read_agf()
3245 ASSERT(pag->pagf_freeblks == be32_to_cpu(agf->agf_freeblks)); in xfs_alloc_read_agf()
3246 ASSERT(pag->pagf_btreeblks == be32_to_cpu(agf->agf_btreeblks)); in xfs_alloc_read_agf()
3247 ASSERT(pag->pagf_flcount == be32_to_cpu(agf->agf_flcount)); in xfs_alloc_read_agf()
3248 ASSERT(pag->pagf_longest == be32_to_cpu(agf->agf_longest)); in xfs_alloc_read_agf()
3249 ASSERT(pag->pagf_levels[XFS_BTNUM_BNOi] == in xfs_alloc_read_agf()
3251 ASSERT(pag->pagf_levels[XFS_BTNUM_CNTi] == in xfs_alloc_read_agf()
3332 bool need_pag = !args->pag; in xfs_alloc_vextent_prepare_ag()
3336 args->pag = xfs_perag_get(args->mp, args->agno); in xfs_alloc_vextent_prepare_ag()
3343 xfs_perag_put(args->pag); in xfs_alloc_vextent_prepare_ag()
3416 error = xfs_rmap_alloc(args->tp, args->agbp, args->pag, in xfs_alloc_vextent_finish()
3428 ASSERT(!xfs_extent_busy_search(mp, args->pag, args->agbno, in xfs_alloc_vextent_finish()
3432 xfs_ag_resv_alloc_extent(args->pag, args->resv, args); in xfs_alloc_vextent_finish()
3440 if (drop_perag && args->pag) { in xfs_alloc_vextent_finish()
3441 xfs_perag_rele(args->pag); in xfs_alloc_vextent_finish()
3442 args->pag = NULL; in xfs_alloc_vextent_finish()
3464 ASSERT(args->pag != NULL); in xfs_alloc_vextent_this_ag()
3465 ASSERT(args->pag->pag_agno == agno); in xfs_alloc_vextent_this_ag()
3522 mp->m_sb.sb_agcount, agno, args->pag) { in xfs_alloc_vextent_iterate_ags()
3546 xfs_perag_rele(args->pag); in xfs_alloc_vextent_iterate_ags()
3547 args->pag = NULL; in xfs_alloc_vextent_iterate_ags()
3564 ASSERT(args->pag == NULL); in xfs_alloc_vextent_iterate_ags()
3590 ASSERT(args->pag == NULL); in xfs_alloc_vextent_start_ag()
3644 ASSERT(args->pag == NULL); in xfs_alloc_vextent_first_ag()
3677 ASSERT(args->pag != NULL); in xfs_alloc_vextent_exact_bno()
3678 ASSERT(args->pag->pag_agno == XFS_FSB_TO_AGNO(mp, target)); in xfs_alloc_vextent_exact_bno()
3712 bool needs_perag = args->pag == NULL; in xfs_alloc_vextent_near_bno()
3717 ASSERT(args->pag->pag_agno == XFS_FSB_TO_AGNO(mp, target)); in xfs_alloc_vextent_near_bno()
3732 args->pag = xfs_perag_grab(mp, args->agno); in xfs_alloc_vextent_near_bno()
3745 struct xfs_perag *pag, in xfs_free_extent_fix_freelist() argument
3754 args.agno = pag->pag_agno; in xfs_free_extent_fix_freelist()
3755 args.pag = pag; in xfs_free_extent_fix_freelist()
3780 struct xfs_perag *pag, in __xfs_free_extent() argument
3800 error = xfs_free_extent_fix_freelist(tp, pag, &agbp); in __xfs_free_extent()
3816 error = xfs_free_ag_extent(tp, agbp, pag->pag_agno, agbno, len, oinfo, in __xfs_free_extent()
3823 xfs_extent_busy_insert(tp, pag, agbno, len, busy_flags); in __xfs_free_extent()