Lines Matching refs:pag
247 struct xfs_perag *pag = cur->bc_ag.pag; in xfs_alloc_get_rec() local
262 if (!xfs_verify_agbext(pag, *bno, *len)) in xfs_alloc_get_rec()
271 pag->pag_agno); in xfs_alloc_get_rec()
426 ASSERT(args->pag->pagf_freeblks + args->pag->pagf_flcount >= in xfs_alloc_fix_len()
701 struct xfs_perag *pag, in xfs_alloc_read_agfl() argument
705 struct xfs_mount *mp = pag->pag_mount; in xfs_alloc_read_agfl()
711 XFS_AG_DADDR(mp, pag->pag_agno, XFS_AGFL_DADDR(mp)), in xfs_alloc_read_agfl()
787 args->agbp, args->pag, XFS_BTNUM_CNT); in xfs_alloc_cur_setup()
797 args->agbp, args->pag, XFS_BTNUM_BNO); in xfs_alloc_cur_setup()
800 args->agbp, args->pag, XFS_BTNUM_BNO); in xfs_alloc_cur_setup()
1067 error = xfs_alloc_get_freelist(args->pag, args->tp, args->agbp, in xfs_alloc_ag_vextent_small()
1074 xfs_extent_busy_reuse(args->mp, args->pag, fbno, 1, in xfs_alloc_ag_vextent_small()
1100 error = xfs_rmap_free(args->tp, args->agbp, args->pag, fbno, 1, in xfs_alloc_ag_vextent_small()
1156 args->pag, XFS_BTNUM_BNO); in xfs_alloc_ag_vextent_exact()
1216 args->pag, XFS_BTNUM_CNT); in xfs_alloc_ag_vextent_exact()
1567 xfs_extent_busy_flush(args->mp, args->pag, in xfs_alloc_ag_vextent_near()
1612 args->pag, XFS_BTNUM_CNT); in xfs_alloc_ag_vextent_size()
1674 args->pag, busy_gen); in xfs_alloc_ag_vextent_size()
1758 xfs_extent_busy_flush(args->mp, args->pag, busy_gen); in xfs_alloc_ag_vextent_size()
1774 args->pag, XFS_BTNUM_BNO); in xfs_alloc_ag_vextent_size()
1833 struct xfs_perag *pag = agbp->b_pag; in xfs_free_ag_extent() local
1839 error = xfs_rmap_free(tp, agbp, pag, bno, len, oinfo); in xfs_free_ag_extent()
1847 bno_cur = xfs_allocbt_init_cursor(mp, tp, agbp, pag, XFS_BTNUM_BNO); in xfs_free_ag_extent()
1917 cnt_cur = xfs_allocbt_init_cursor(mp, tp, agbp, pag, XFS_BTNUM_CNT); in xfs_free_ag_extent()
2147 struct xfs_perag *pag, in xfs_alloc_longest_free_extent() argument
2157 if (need > pag->pagf_flcount) in xfs_alloc_longest_free_extent()
2158 delta = need - pag->pagf_flcount; in xfs_alloc_longest_free_extent()
2165 if (pag->pagf_freeblks - pag->pagf_longest < reserved) in xfs_alloc_longest_free_extent()
2166 delta += reserved - (pag->pagf_freeblks - pag->pagf_longest); in xfs_alloc_longest_free_extent()
2172 if (pag->pagf_longest > delta) in xfs_alloc_longest_free_extent()
2173 return min_t(xfs_extlen_t, pag->pag_mount->m_ag_max_usable, in xfs_alloc_longest_free_extent()
2174 pag->pagf_longest - delta); in xfs_alloc_longest_free_extent()
2177 return pag->pagf_flcount > 0 || pag->pagf_longest > 0; in xfs_alloc_longest_free_extent()
2187 struct xfs_perag *pag) in xfs_alloc_min_freelist() argument
2191 const uint8_t *levels = pag ? pag->pagf_levels : fake_levels; in xfs_alloc_min_freelist()
2222 struct xfs_perag *pag = args->pag; in xfs_alloc_space_available() local
2231 reservation = xfs_ag_resv_needed(pag, args->resv); in xfs_alloc_space_available()
2235 longest = xfs_alloc_longest_free_extent(pag, min_free, reservation); in xfs_alloc_space_available()
2244 agflcount = min_t(xfs_extlen_t, pag->pagf_flcount, min_free); in xfs_alloc_space_available()
2245 available = (int)(pag->pagf_freeblks + agflcount - in xfs_alloc_space_available()
2353 struct xfs_perag *pag) in xfs_agfl_reset() argument
2358 ASSERT(xfs_perag_agfl_needs_reset(pag)); in xfs_agfl_reset()
2364 pag->pag_agno, pag->pagf_flcount); in xfs_agfl_reset()
2372 pag->pagf_flcount = 0; in xfs_agfl_reset()
2373 clear_bit(XFS_AGSTATE_AGFL_NEEDS_RESET, &pag->pag_opstate); in xfs_agfl_reset()
2482 args->pag, XFS_BTNUM_CNT); in xfs_exact_minlen_extent_available()
2516 struct xfs_perag *pag = args->pag; in xfs_alloc_fix_freelist() local
2528 if (!xfs_perag_initialised_agf(pag)) { in xfs_alloc_fix_freelist()
2529 error = xfs_alloc_read_agf(pag, tp, flags, &agbp); in xfs_alloc_fix_freelist()
2543 if (xfs_perag_prefers_metadata(pag) && in xfs_alloc_fix_freelist()
2550 need = xfs_alloc_min_freelist(mp, pag); in xfs_alloc_fix_freelist()
2560 error = xfs_alloc_read_agf(pag, tp, flags, &agbp); in xfs_alloc_fix_freelist()
2570 if (xfs_perag_agfl_needs_reset(pag)) in xfs_alloc_fix_freelist()
2571 xfs_agfl_reset(tp, agbp, pag); in xfs_alloc_fix_freelist()
2574 need = xfs_alloc_min_freelist(mp, pag); in xfs_alloc_fix_freelist()
2617 while (!(flags & XFS_ALLOC_FLAG_NOSHRINK) && pag->pagf_flcount > need) { in xfs_alloc_fix_freelist()
2618 error = xfs_alloc_get_freelist(pag, tp, agbp, &bno, 0); in xfs_alloc_fix_freelist()
2631 targs.pag = pag; in xfs_alloc_fix_freelist()
2632 error = xfs_alloc_read_agfl(pag, tp, &agflbp); in xfs_alloc_fix_freelist()
2637 while (pag->pagf_flcount < need) { in xfs_alloc_fix_freelist()
2639 targs.maxlen = need - pag->pagf_flcount; in xfs_alloc_fix_freelist()
2659 error = xfs_rmap_alloc(tp, agbp, pag, in xfs_alloc_fix_freelist()
2673 error = xfs_alloc_put_freelist(pag, tp, agbp, in xfs_alloc_fix_freelist()
2699 struct xfs_perag *pag, in xfs_alloc_get_freelist() argument
2723 error = xfs_alloc_read_agfl(pag, tp, &agflbp); in xfs_alloc_get_freelist()
2738 ASSERT(!xfs_perag_agfl_needs_reset(pag)); in xfs_alloc_get_freelist()
2740 pag->pagf_flcount--; in xfs_alloc_get_freelist()
2745 pag->pagf_btreeblks++; in xfs_alloc_get_freelist()
2802 struct xfs_perag *pag, in xfs_alloc_put_freelist() argument
2818 error = xfs_alloc_read_agfl(pag, tp, &agflbp); in xfs_alloc_put_freelist()
2827 ASSERT(!xfs_perag_agfl_needs_reset(pag)); in xfs_alloc_put_freelist()
2829 pag->pagf_flcount++; in xfs_alloc_put_freelist()
2834 pag->pagf_btreeblks--; in xfs_alloc_put_freelist()
2985 struct xfs_perag *pag, in xfs_read_agf() argument
2990 struct xfs_mount *mp = pag->pag_mount; in xfs_read_agf()
2993 trace_xfs_read_agf(pag->pag_mount, pag->pag_agno); in xfs_read_agf()
2996 XFS_AG_DADDR(mp, pag->pag_agno, XFS_AGF_DADDR(mp)), in xfs_read_agf()
3012 struct xfs_perag *pag, in xfs_alloc_read_agf() argument
3022 trace_xfs_alloc_read_agf(pag->pag_mount, pag->pag_agno); in xfs_alloc_read_agf()
3027 error = xfs_read_agf(pag, tp, in xfs_alloc_read_agf()
3034 if (!xfs_perag_initialised_agf(pag)) { in xfs_alloc_read_agf()
3035 pag->pagf_freeblks = be32_to_cpu(agf->agf_freeblks); in xfs_alloc_read_agf()
3036 pag->pagf_btreeblks = be32_to_cpu(agf->agf_btreeblks); in xfs_alloc_read_agf()
3037 pag->pagf_flcount = be32_to_cpu(agf->agf_flcount); in xfs_alloc_read_agf()
3038 pag->pagf_longest = be32_to_cpu(agf->agf_longest); in xfs_alloc_read_agf()
3039 pag->pagf_levels[XFS_BTNUM_BNOi] = in xfs_alloc_read_agf()
3041 pag->pagf_levels[XFS_BTNUM_CNTi] = in xfs_alloc_read_agf()
3043 pag->pagf_levels[XFS_BTNUM_RMAPi] = in xfs_alloc_read_agf()
3045 pag->pagf_refcount_level = be32_to_cpu(agf->agf_refcount_level); in xfs_alloc_read_agf()
3046 if (xfs_agfl_needs_reset(pag->pag_mount, agf)) in xfs_alloc_read_agf()
3047 set_bit(XFS_AGSTATE_AGFL_NEEDS_RESET, &pag->pag_opstate); in xfs_alloc_read_agf()
3056 allocbt_blks = pag->pagf_btreeblks; in xfs_alloc_read_agf()
3057 if (xfs_has_rmapbt(pag->pag_mount)) in xfs_alloc_read_agf()
3061 &pag->pag_mount->m_allocbt_blks); in xfs_alloc_read_agf()
3063 set_bit(XFS_AGSTATE_AGF_INIT, &pag->pag_opstate); in xfs_alloc_read_agf()
3066 else if (!xfs_is_shutdown(pag->pag_mount)) { in xfs_alloc_read_agf()
3067 ASSERT(pag->pagf_freeblks == be32_to_cpu(agf->agf_freeblks)); in xfs_alloc_read_agf()
3068 ASSERT(pag->pagf_btreeblks == be32_to_cpu(agf->agf_btreeblks)); in xfs_alloc_read_agf()
3069 ASSERT(pag->pagf_flcount == be32_to_cpu(agf->agf_flcount)); in xfs_alloc_read_agf()
3070 ASSERT(pag->pagf_longest == be32_to_cpu(agf->agf_longest)); in xfs_alloc_read_agf()
3071 ASSERT(pag->pagf_levels[XFS_BTNUM_BNOi] == in xfs_alloc_read_agf()
3073 ASSERT(pag->pagf_levels[XFS_BTNUM_CNTi] == in xfs_alloc_read_agf()
3153 bool need_pag = !args->pag; in xfs_alloc_vextent_prepare_ag()
3157 args->pag = xfs_perag_get(args->mp, args->agno); in xfs_alloc_vextent_prepare_ag()
3164 xfs_perag_put(args->pag); in xfs_alloc_vextent_prepare_ag()
3237 error = xfs_rmap_alloc(args->tp, args->agbp, args->pag, in xfs_alloc_vextent_finish()
3249 ASSERT(!xfs_extent_busy_search(mp, args->pag, args->agbno, in xfs_alloc_vextent_finish()
3253 xfs_ag_resv_alloc_extent(args->pag, args->resv, args); in xfs_alloc_vextent_finish()
3259 if (drop_perag && args->pag) { in xfs_alloc_vextent_finish()
3260 xfs_perag_rele(args->pag); in xfs_alloc_vextent_finish()
3261 args->pag = NULL; in xfs_alloc_vextent_finish()
3331 mp->m_sb.sb_agcount, agno, args->pag) { in xfs_alloc_vextent_iterate_ags()
3355 xfs_perag_rele(args->pag); in xfs_alloc_vextent_iterate_ags()
3356 args->pag = NULL; in xfs_alloc_vextent_iterate_ags()
3372 ASSERT(args->pag == NULL); in xfs_alloc_vextent_iterate_ags()
3502 bool needs_perag = args->pag == NULL; in xfs_alloc_vextent_near_bno()
3515 args->pag = xfs_perag_grab(mp, args->agno); in xfs_alloc_vextent_near_bno()
3528 struct xfs_perag *pag, in xfs_free_extent_fix_freelist() argument
3537 args.agno = pag->pag_agno; in xfs_free_extent_fix_freelist()
3538 args.pag = pag; in xfs_free_extent_fix_freelist()
3576 struct xfs_perag *pag; in __xfs_free_extent() local
3585 pag = xfs_perag_get(mp, agno); in __xfs_free_extent()
3586 error = xfs_free_extent_fix_freelist(tp, pag, &agbp); in __xfs_free_extent()
3608 xfs_extent_busy_insert(tp, pag, agbno, len, busy_flags); in __xfs_free_extent()
3609 xfs_perag_put(pag); in __xfs_free_extent()
3615 xfs_perag_put(pag); in __xfs_free_extent()