Lines Matching +full:max +full:- +full:cur
1 // SPDX-License-Identifier: GPL-2.0
3 * Copyright (c) 2000-2001,2005 Silicon Graphics, Inc.
28 struct xfs_btree_cur *cur) in xfs_bnobt_dup_cursor() argument
30 return xfs_bnobt_init_cursor(cur->bc_mp, cur->bc_tp, cur->bc_ag.agbp, in xfs_bnobt_dup_cursor()
31 to_perag(cur->bc_group)); in xfs_bnobt_dup_cursor()
36 struct xfs_btree_cur *cur) in xfs_cntbt_dup_cursor() argument
38 return xfs_cntbt_init_cursor(cur->bc_mp, cur->bc_tp, cur->bc_ag.agbp, in xfs_cntbt_dup_cursor()
39 to_perag(cur->bc_group)); in xfs_cntbt_dup_cursor()
44 struct xfs_btree_cur *cur, in xfs_allocbt_set_root() argument
48 struct xfs_perag *pag = to_perag(cur->bc_group); in xfs_allocbt_set_root()
49 struct xfs_buf *agbp = cur->bc_ag.agbp; in xfs_allocbt_set_root()
50 struct xfs_agf *agf = agbp->b_addr; in xfs_allocbt_set_root()
52 ASSERT(ptr->s != 0); in xfs_allocbt_set_root()
54 if (xfs_btree_is_bno(cur->bc_ops)) { in xfs_allocbt_set_root()
55 agf->agf_bno_root = ptr->s; in xfs_allocbt_set_root()
56 be32_add_cpu(&agf->agf_bno_level, inc); in xfs_allocbt_set_root()
57 pag->pagf_bno_level += inc; in xfs_allocbt_set_root()
59 agf->agf_cnt_root = ptr->s; in xfs_allocbt_set_root()
60 be32_add_cpu(&agf->agf_cnt_level, inc); in xfs_allocbt_set_root()
61 pag->pagf_cnt_level += inc; in xfs_allocbt_set_root()
64 xfs_alloc_log_agf(cur->bc_tp, agbp, XFS_AGF_ROOTS | XFS_AGF_LEVELS); in xfs_allocbt_set_root()
69 struct xfs_btree_cur *cur, in xfs_allocbt_alloc_block() argument
78 error = xfs_alloc_get_freelist(to_perag(cur->bc_group), cur->bc_tp, in xfs_allocbt_alloc_block()
79 cur->bc_ag.agbp, &bno, 1); in xfs_allocbt_alloc_block()
88 atomic64_inc(&cur->bc_mp->m_allocbt_blks); in xfs_allocbt_alloc_block()
89 xfs_extent_busy_reuse(cur->bc_group, bno, 1, false); in xfs_allocbt_alloc_block()
91 new->s = cpu_to_be32(bno); in xfs_allocbt_alloc_block()
99 struct xfs_btree_cur *cur, in xfs_allocbt_free_block() argument
102 struct xfs_buf *agbp = cur->bc_ag.agbp; in xfs_allocbt_free_block()
106 bno = xfs_daddr_to_agbno(cur->bc_mp, xfs_buf_daddr(bp)); in xfs_allocbt_free_block()
107 error = xfs_alloc_put_freelist(to_perag(cur->bc_group), cur->bc_tp, in xfs_allocbt_free_block()
112 atomic64_dec(&cur->bc_mp->m_allocbt_blks); in xfs_allocbt_free_block()
113 xfs_extent_busy_insert(cur->bc_tp, pag_group(agbp->b_pag), bno, 1, in xfs_allocbt_free_block()
120 struct xfs_btree_cur *cur, in xfs_allocbt_get_minrecs() argument
123 return cur->bc_mp->m_alloc_mnr[level != 0]; in xfs_allocbt_get_minrecs()
128 struct xfs_btree_cur *cur, in xfs_allocbt_get_maxrecs() argument
131 return cur->bc_mp->m_alloc_mxr[level != 0]; in xfs_allocbt_get_maxrecs()
139 key->alloc.ar_startblock = rec->alloc.ar_startblock; in xfs_allocbt_init_key_from_rec()
140 key->alloc.ar_blockcount = rec->alloc.ar_blockcount; in xfs_allocbt_init_key_from_rec()
150 x = be32_to_cpu(rec->alloc.ar_startblock); in xfs_bnobt_init_high_key_from_rec()
151 x += be32_to_cpu(rec->alloc.ar_blockcount) - 1; in xfs_bnobt_init_high_key_from_rec()
152 key->alloc.ar_startblock = cpu_to_be32(x); in xfs_bnobt_init_high_key_from_rec()
153 key->alloc.ar_blockcount = 0; in xfs_bnobt_init_high_key_from_rec()
161 key->alloc.ar_blockcount = rec->alloc.ar_blockcount; in xfs_cntbt_init_high_key_from_rec()
162 key->alloc.ar_startblock = 0; in xfs_cntbt_init_high_key_from_rec()
167 struct xfs_btree_cur *cur, in xfs_allocbt_init_rec_from_cur() argument
170 rec->alloc.ar_startblock = cpu_to_be32(cur->bc_rec.a.ar_startblock); in xfs_allocbt_init_rec_from_cur()
171 rec->alloc.ar_blockcount = cpu_to_be32(cur->bc_rec.a.ar_blockcount); in xfs_allocbt_init_rec_from_cur()
176 struct xfs_btree_cur *cur, in xfs_allocbt_init_ptr_from_cur() argument
179 struct xfs_agf *agf = cur->bc_ag.agbp->b_addr; in xfs_allocbt_init_ptr_from_cur()
181 ASSERT(cur->bc_group->xg_gno == be32_to_cpu(agf->agf_seqno)); in xfs_allocbt_init_ptr_from_cur()
183 if (xfs_btree_is_bno(cur->bc_ops)) in xfs_allocbt_init_ptr_from_cur()
184 ptr->s = agf->agf_bno_root; in xfs_allocbt_init_ptr_from_cur()
186 ptr->s = agf->agf_cnt_root; in xfs_allocbt_init_ptr_from_cur()
191 struct xfs_btree_cur *cur, in xfs_bnobt_key_diff() argument
194 struct xfs_alloc_rec_incore *rec = &cur->bc_rec.a; in xfs_bnobt_key_diff()
195 const struct xfs_alloc_rec *kp = &key->alloc; in xfs_bnobt_key_diff()
197 return (int64_t)be32_to_cpu(kp->ar_startblock) - rec->ar_startblock; in xfs_bnobt_key_diff()
202 struct xfs_btree_cur *cur, in xfs_cntbt_key_diff() argument
205 struct xfs_alloc_rec_incore *rec = &cur->bc_rec.a; in xfs_cntbt_key_diff()
206 const struct xfs_alloc_rec *kp = &key->alloc; in xfs_cntbt_key_diff()
209 diff = (int64_t)be32_to_cpu(kp->ar_blockcount) - rec->ar_blockcount; in xfs_cntbt_key_diff()
213 return (int64_t)be32_to_cpu(kp->ar_startblock) - rec->ar_startblock; in xfs_cntbt_key_diff()
218 struct xfs_btree_cur *cur, in xfs_bnobt_diff_two_keys() argument
223 ASSERT(!mask || mask->alloc.ar_startblock); in xfs_bnobt_diff_two_keys()
225 return (int64_t)be32_to_cpu(k1->alloc.ar_startblock) - in xfs_bnobt_diff_two_keys()
226 be32_to_cpu(k2->alloc.ar_startblock); in xfs_bnobt_diff_two_keys()
231 struct xfs_btree_cur *cur, in xfs_cntbt_diff_two_keys() argument
238 ASSERT(!mask || (mask->alloc.ar_blockcount && in xfs_cntbt_diff_two_keys()
239 mask->alloc.ar_startblock)); in xfs_cntbt_diff_two_keys()
241 diff = be32_to_cpu(k1->alloc.ar_blockcount) - in xfs_cntbt_diff_two_keys()
242 be32_to_cpu(k2->alloc.ar_blockcount); in xfs_cntbt_diff_two_keys()
246 return be32_to_cpu(k1->alloc.ar_startblock) - in xfs_cntbt_diff_two_keys()
247 be32_to_cpu(k2->alloc.ar_startblock); in xfs_cntbt_diff_two_keys()
254 struct xfs_mount *mp = bp->b_mount; in xfs_allocbt_verify()
256 struct xfs_perag *pag = bp->b_pag; in xfs_allocbt_verify()
260 if (!xfs_verify_magic(bp, block->bb_magic)) in xfs_allocbt_verify()
274 * Otherwise check against the per-tree limit. Peek at one of the in xfs_allocbt_verify()
278 level = be16_to_cpu(block->bb_level); in xfs_allocbt_verify()
287 if (bp->b_ops->magic[0] == cpu_to_be32(XFS_ABTC_MAGIC)) { in xfs_allocbt_verify()
288 maxlevel = pag->pagf_cnt_level; in xfs_allocbt_verify()
290 repair_maxlevel = pag->pagf_repair_cnt_level; in xfs_allocbt_verify()
293 maxlevel = pag->pagf_bno_level; in xfs_allocbt_verify()
295 repair_maxlevel = pag->pagf_repair_bno_level; in xfs_allocbt_verify()
299 if (level >= max(maxlevel, repair_maxlevel)) in xfs_allocbt_verify()
301 } else if (level >= mp->m_alloc_maxlevels) in xfs_allocbt_verify()
304 return xfs_btree_agblock_verify(bp, mp->m_alloc_mxr[level != 0]); in xfs_allocbt_verify()
314 xfs_verifier_error(bp, -EFSBADCRC, __this_address); in xfs_allocbt_read_verify()
318 xfs_verifier_error(bp, -EFSCORRUPTED, fa); in xfs_allocbt_read_verify()
321 if (bp->b_error) in xfs_allocbt_read_verify()
334 xfs_verifier_error(bp, -EFSCORRUPTED, fa); in xfs_allocbt_write_verify()
361 struct xfs_btree_cur *cur, in xfs_bnobt_keys_inorder() argument
365 return be32_to_cpu(k1->alloc.ar_startblock) < in xfs_bnobt_keys_inorder()
366 be32_to_cpu(k2->alloc.ar_startblock); in xfs_bnobt_keys_inorder()
371 struct xfs_btree_cur *cur, in xfs_bnobt_recs_inorder() argument
375 return be32_to_cpu(r1->alloc.ar_startblock) + in xfs_bnobt_recs_inorder()
376 be32_to_cpu(r1->alloc.ar_blockcount) <= in xfs_bnobt_recs_inorder()
377 be32_to_cpu(r2->alloc.ar_startblock); in xfs_bnobt_recs_inorder()
382 struct xfs_btree_cur *cur, in xfs_cntbt_keys_inorder() argument
386 return be32_to_cpu(k1->alloc.ar_blockcount) < in xfs_cntbt_keys_inorder()
387 be32_to_cpu(k2->alloc.ar_blockcount) || in xfs_cntbt_keys_inorder()
388 (k1->alloc.ar_blockcount == k2->alloc.ar_blockcount && in xfs_cntbt_keys_inorder()
389 be32_to_cpu(k1->alloc.ar_startblock) < in xfs_cntbt_keys_inorder()
390 be32_to_cpu(k2->alloc.ar_startblock)); in xfs_cntbt_keys_inorder()
395 struct xfs_btree_cur *cur, in xfs_cntbt_recs_inorder() argument
399 return be32_to_cpu(r1->alloc.ar_blockcount) < in xfs_cntbt_recs_inorder()
400 be32_to_cpu(r2->alloc.ar_blockcount) || in xfs_cntbt_recs_inorder()
401 (r1->alloc.ar_blockcount == r2->alloc.ar_blockcount && in xfs_cntbt_recs_inorder()
402 be32_to_cpu(r1->alloc.ar_startblock) < in xfs_cntbt_recs_inorder()
403 be32_to_cpu(r2->alloc.ar_startblock)); in xfs_cntbt_recs_inorder()
408 struct xfs_btree_cur *cur, in xfs_allocbt_keys_contiguous() argument
413 ASSERT(!mask || mask->alloc.ar_startblock); in xfs_allocbt_keys_contiguous()
415 return xbtree_key_contig(be32_to_cpu(key1->alloc.ar_startblock), in xfs_allocbt_keys_contiguous()
416 be32_to_cpu(key2->alloc.ar_startblock)); in xfs_allocbt_keys_contiguous()
491 struct xfs_btree_cur *cur; in xfs_bnobt_init_cursor() local
493 cur = xfs_btree_alloc_cursor(mp, tp, &xfs_bnobt_ops, in xfs_bnobt_init_cursor()
494 mp->m_alloc_maxlevels, xfs_allocbt_cur_cache); in xfs_bnobt_init_cursor()
495 cur->bc_group = xfs_group_hold(pag_group(pag)); in xfs_bnobt_init_cursor()
496 cur->bc_ag.agbp = agbp; in xfs_bnobt_init_cursor()
498 struct xfs_agf *agf = agbp->b_addr; in xfs_bnobt_init_cursor()
500 cur->bc_nlevels = be32_to_cpu(agf->agf_bno_level); in xfs_bnobt_init_cursor()
502 return cur; in xfs_bnobt_init_cursor()
517 struct xfs_btree_cur *cur; in xfs_cntbt_init_cursor() local
519 cur = xfs_btree_alloc_cursor(mp, tp, &xfs_cntbt_ops, in xfs_cntbt_init_cursor()
520 mp->m_alloc_maxlevels, xfs_allocbt_cur_cache); in xfs_cntbt_init_cursor()
521 cur->bc_group = xfs_group_hold(pag_group(pag)); in xfs_cntbt_init_cursor()
522 cur->bc_ag.agbp = agbp; in xfs_cntbt_init_cursor()
524 struct xfs_agf *agf = agbp->b_addr; in xfs_cntbt_init_cursor()
526 cur->bc_nlevels = be32_to_cpu(agf->agf_cnt_level); in xfs_cntbt_init_cursor()
528 return cur; in xfs_cntbt_init_cursor()
537 struct xfs_btree_cur *cur, in xfs_allocbt_commit_staged_btree() argument
541 struct xfs_agf *agf = agbp->b_addr; in xfs_allocbt_commit_staged_btree()
542 struct xbtree_afakeroot *afake = cur->bc_ag.afake; in xfs_allocbt_commit_staged_btree()
544 ASSERT(cur->bc_flags & XFS_BTREE_STAGING); in xfs_allocbt_commit_staged_btree()
546 if (xfs_btree_is_bno(cur->bc_ops)) { in xfs_allocbt_commit_staged_btree()
547 agf->agf_bno_root = cpu_to_be32(afake->af_root); in xfs_allocbt_commit_staged_btree()
548 agf->agf_bno_level = cpu_to_be32(afake->af_levels); in xfs_allocbt_commit_staged_btree()
550 agf->agf_cnt_root = cpu_to_be32(afake->af_root); in xfs_allocbt_commit_staged_btree()
551 agf->agf_cnt_level = cpu_to_be32(afake->af_levels); in xfs_allocbt_commit_staged_btree()
555 xfs_btree_commit_afakeroot(cur, tp, agbp); in xfs_allocbt_commit_staged_btree()
578 blocklen -= XFS_ALLOC_BLOCK_LEN(mp); in xfs_allocbt_maxrecs()
585 /* Compute the max possible height for free space btrees. */
592 blocklen = min(XFS_MIN_BLOCKSIZE - XFS_BTREE_SBLOCK_LEN, in xfs_allocbt_maxlevels_ondisk()
593 XFS_MIN_CRC_BLOCKSIZE - XFS_BTREE_SBLOCK_CRC_LEN); in xfs_allocbt_maxlevels_ondisk()
607 return xfs_btree_calc_size(mp->m_alloc_mnr, len); in xfs_allocbt_calc_size()
618 return -ENOMEM; in xfs_allocbt_init_cur_cache()