Lines Matching refs:mp
43 struct xfs_mount *mp, in xfs_perag_get() argument
50 pag = radix_tree_lookup(&mp->m_perag_tree, agno); in xfs_perag_get()
56 trace_xfs_perag_get(mp, agno, ref, _RET_IP_); in xfs_perag_get()
65 struct xfs_mount *mp, in xfs_perag_get_tag() argument
74 found = radix_tree_gang_lookup_tag(&mp->m_perag_tree, in xfs_perag_get_tag()
82 trace_xfs_perag_get_tag(mp, pag->pag_agno, ref, _RET_IP_); in xfs_perag_get_tag()
107 struct xfs_mount *mp, in xfs_initialize_perag_data() argument
112 struct xfs_sb *sbp = &mp->m_sb; in xfs_initialize_perag_data()
127 error = xfs_alloc_pagf_init(mp, NULL, index, 0); in xfs_initialize_perag_data()
131 error = xfs_ialloc_pagi_init(mp, NULL, index); in xfs_initialize_perag_data()
134 pag = xfs_perag_get(mp, index); in xfs_initialize_perag_data()
151 xfs_alert(mp, "AGF corruption. Please run xfs_repair."); in xfs_initialize_perag_data()
157 spin_lock(&mp->m_sb_lock); in xfs_initialize_perag_data()
161 spin_unlock(&mp->m_sb_lock); in xfs_initialize_perag_data()
163 xfs_reinit_percpu_counters(mp); in xfs_initialize_perag_data()
165 xfs_fs_mark_healthy(mp, XFS_SICK_FS_COUNTERS); in xfs_initialize_perag_data()
185 struct xfs_mount *mp) in xfs_free_perag() argument
190 for (agno = 0; agno < mp->m_sb.sb_agcount; agno++) { in xfs_free_perag()
191 spin_lock(&mp->m_perag_lock); in xfs_free_perag()
192 pag = radix_tree_delete(&mp->m_perag_tree, agno); in xfs_free_perag()
193 spin_unlock(&mp->m_perag_lock); in xfs_free_perag()
207 struct xfs_mount *mp, in xfs_initialize_perag() argument
222 pag = xfs_perag_get(mp, index); in xfs_initialize_perag()
234 pag->pag_mount = mp; in xfs_initialize_perag()
240 spin_lock(&mp->m_perag_lock); in xfs_initialize_perag()
241 if (radix_tree_insert(&mp->m_perag_tree, index, pag)) { in xfs_initialize_perag()
243 spin_unlock(&mp->m_perag_lock); in xfs_initialize_perag()
248 spin_unlock(&mp->m_perag_lock); in xfs_initialize_perag()
276 index = xfs_set_inode_alloc(mp, agcount); in xfs_initialize_perag()
281 mp->m_ag_prealloc_blocks = xfs_prealloc_blocks(mp); in xfs_initialize_perag()
287 radix_tree_delete(&mp->m_perag_tree, index); in xfs_initialize_perag()
293 pag = radix_tree_delete(&mp->m_perag_tree, index); in xfs_initialize_perag()
305 struct xfs_mount *mp, in xfs_get_aghdr_buf() argument
314 error = xfs_buf_get_uncached(mp->m_ddev_targp, numblks, 0, &bp); in xfs_get_aghdr_buf()
325 static inline bool is_log_ag(struct xfs_mount *mp, struct aghdr_init_data *id) in is_log_ag() argument
327 return mp->m_sb.sb_logstart > 0 && in is_log_ag()
328 id->agno == XFS_FSB_TO_AGNO(mp, mp->m_sb.sb_logstart); in is_log_ag()
336 struct xfs_mount *mp, in xfs_btroot_init() argument
340 xfs_btree_init_block(mp, bp, id->type, 0, 0, id->agno); in xfs_btroot_init()
346 struct xfs_mount *mp, in xfs_freesp_init_recs() argument
353 arec = XFS_ALLOC_REC_ADDR(mp, XFS_BUF_TO_BLOCK(bp), 1); in xfs_freesp_init_recs()
354 arec->ar_startblock = cpu_to_be32(mp->m_ag_prealloc_blocks); in xfs_freesp_init_recs()
356 if (is_log_ag(mp, id)) { in xfs_freesp_init_recs()
358 xfs_agblock_t start = XFS_FSB_TO_AGBNO(mp, in xfs_freesp_init_recs()
359 mp->m_sb.sb_logstart); in xfs_freesp_init_recs()
361 ASSERT(start >= mp->m_ag_prealloc_blocks); in xfs_freesp_init_recs()
362 if (start != mp->m_ag_prealloc_blocks) { in xfs_freesp_init_recs()
367 mp->m_ag_prealloc_blocks); in xfs_freesp_init_recs()
383 be32_add_cpu(&arec->ar_startblock, mp->m_sb.sb_logblocks); in xfs_freesp_init_recs()
403 struct xfs_mount *mp, in xfs_bnoroot_init() argument
407 xfs_btree_init_block(mp, bp, XFS_BTNUM_BNO, 0, 1, id->agno); in xfs_bnoroot_init()
408 xfs_freesp_init_recs(mp, bp, id); in xfs_bnoroot_init()
413 struct xfs_mount *mp, in xfs_cntroot_init() argument
417 xfs_btree_init_block(mp, bp, XFS_BTNUM_CNT, 0, 1, id->agno); in xfs_cntroot_init()
418 xfs_freesp_init_recs(mp, bp, id); in xfs_cntroot_init()
426 struct xfs_mount *mp, in xfs_rmaproot_init() argument
433 xfs_btree_init_block(mp, bp, XFS_BTNUM_RMAP, 0, 4, id->agno); in xfs_rmaproot_init()
446 rrec->rm_blockcount = cpu_to_be32(XFS_BNO_BLOCK(mp)); in xfs_rmaproot_init()
452 rrec->rm_startblock = cpu_to_be32(XFS_BNO_BLOCK(mp)); in xfs_rmaproot_init()
459 rrec->rm_startblock = cpu_to_be32(XFS_IBT_BLOCK(mp)); in xfs_rmaproot_init()
460 rrec->rm_blockcount = cpu_to_be32(XFS_RMAP_BLOCK(mp) - in xfs_rmaproot_init()
461 XFS_IBT_BLOCK(mp)); in xfs_rmaproot_init()
467 rrec->rm_startblock = cpu_to_be32(XFS_RMAP_BLOCK(mp)); in xfs_rmaproot_init()
473 if (xfs_has_reflink(mp)) { in xfs_rmaproot_init()
475 rrec->rm_startblock = cpu_to_be32(xfs_refc_block(mp)); in xfs_rmaproot_init()
483 if (is_log_ag(mp, id)) { in xfs_rmaproot_init()
487 XFS_FSB_TO_AGBNO(mp, mp->m_sb.sb_logstart)); in xfs_rmaproot_init()
488 rrec->rm_blockcount = cpu_to_be32(mp->m_sb.sb_logblocks); in xfs_rmaproot_init()
505 struct xfs_mount *mp, in xfs_sbblock_init() argument
511 xfs_sb_to_disk(dsb, &mp->m_sb); in xfs_sbblock_init()
517 struct xfs_mount *mp, in xfs_agfblock_init() argument
528 agf->agf_roots[XFS_BTNUM_BNOi] = cpu_to_be32(XFS_BNO_BLOCK(mp)); in xfs_agfblock_init()
529 agf->agf_roots[XFS_BTNUM_CNTi] = cpu_to_be32(XFS_CNT_BLOCK(mp)); in xfs_agfblock_init()
532 if (xfs_has_rmapbt(mp)) { in xfs_agfblock_init()
534 cpu_to_be32(XFS_RMAP_BLOCK(mp)); in xfs_agfblock_init()
542 tmpsize = id->agsize - mp->m_ag_prealloc_blocks; in xfs_agfblock_init()
545 if (xfs_has_crc(mp)) in xfs_agfblock_init()
546 uuid_copy(&agf->agf_uuid, &mp->m_sb.sb_meta_uuid); in xfs_agfblock_init()
547 if (xfs_has_reflink(mp)) { in xfs_agfblock_init()
549 xfs_refc_block(mp)); in xfs_agfblock_init()
554 if (is_log_ag(mp, id)) { in xfs_agfblock_init()
555 int64_t logblocks = mp->m_sb.sb_logblocks; in xfs_agfblock_init()
559 XFS_FSB_TO_AGBNO(mp, mp->m_sb.sb_logstart) - logblocks); in xfs_agfblock_init()
565 struct xfs_mount *mp, in xfs_agflblock_init() argument
573 if (xfs_has_crc(mp)) { in xfs_agflblock_init()
576 uuid_copy(&agfl->agfl_uuid, &mp->m_sb.sb_meta_uuid); in xfs_agflblock_init()
580 for (bucket = 0; bucket < xfs_agfl_size(mp); bucket++) in xfs_agflblock_init()
586 struct xfs_mount *mp, in xfs_agiblock_init() argument
598 agi->agi_root = cpu_to_be32(XFS_IBT_BLOCK(mp)); in xfs_agiblock_init()
603 if (xfs_has_crc(mp)) in xfs_agiblock_init()
604 uuid_copy(&agi->agi_uuid, &mp->m_sb.sb_meta_uuid); in xfs_agiblock_init()
605 if (xfs_has_finobt(mp)) { in xfs_agiblock_init()
606 agi->agi_free_root = cpu_to_be32(XFS_FIBT_BLOCK(mp)); in xfs_agiblock_init()
611 if (xfs_has_inobtcounts(mp)) { in xfs_agiblock_init()
613 if (xfs_has_finobt(mp)) in xfs_agiblock_init()
618 typedef void (*aghdr_init_work_f)(struct xfs_mount *mp, struct xfs_buf *bp,
622 struct xfs_mount *mp, in xfs_ag_init_hdr() argument
630 error = xfs_get_aghdr_buf(mp, id->daddr, id->numblks, &bp, ops); in xfs_ag_init_hdr()
634 (*work)(mp, bp, id); in xfs_ag_init_hdr()
662 struct xfs_mount *mp, in xfs_ag_init_headers() argument
668 .daddr = XFS_AG_DADDR(mp, id->agno, XFS_SB_DADDR), in xfs_ag_init_headers()
669 .numblks = XFS_FSS_TO_BB(mp, 1), in xfs_ag_init_headers()
675 .daddr = XFS_AG_DADDR(mp, id->agno, XFS_AGF_DADDR(mp)), in xfs_ag_init_headers()
676 .numblks = XFS_FSS_TO_BB(mp, 1), in xfs_ag_init_headers()
682 .daddr = XFS_AG_DADDR(mp, id->agno, XFS_AGFL_DADDR(mp)), in xfs_ag_init_headers()
683 .numblks = XFS_FSS_TO_BB(mp, 1), in xfs_ag_init_headers()
689 .daddr = XFS_AG_DADDR(mp, id->agno, XFS_AGI_DADDR(mp)), in xfs_ag_init_headers()
690 .numblks = XFS_FSS_TO_BB(mp, 1), in xfs_ag_init_headers()
696 .daddr = XFS_AGB_TO_DADDR(mp, id->agno, XFS_BNO_BLOCK(mp)), in xfs_ag_init_headers()
697 .numblks = BTOBB(mp->m_sb.sb_blocksize), in xfs_ag_init_headers()
703 .daddr = XFS_AGB_TO_DADDR(mp, id->agno, XFS_CNT_BLOCK(mp)), in xfs_ag_init_headers()
704 .numblks = BTOBB(mp->m_sb.sb_blocksize), in xfs_ag_init_headers()
710 .daddr = XFS_AGB_TO_DADDR(mp, id->agno, XFS_IBT_BLOCK(mp)), in xfs_ag_init_headers()
711 .numblks = BTOBB(mp->m_sb.sb_blocksize), in xfs_ag_init_headers()
718 .daddr = XFS_AGB_TO_DADDR(mp, id->agno, XFS_FIBT_BLOCK(mp)), in xfs_ag_init_headers()
719 .numblks = BTOBB(mp->m_sb.sb_blocksize), in xfs_ag_init_headers()
723 .need_init = xfs_has_finobt(mp) in xfs_ag_init_headers()
726 .daddr = XFS_AGB_TO_DADDR(mp, id->agno, XFS_RMAP_BLOCK(mp)), in xfs_ag_init_headers()
727 .numblks = BTOBB(mp->m_sb.sb_blocksize), in xfs_ag_init_headers()
730 .need_init = xfs_has_rmapbt(mp) in xfs_ag_init_headers()
733 .daddr = XFS_AGB_TO_DADDR(mp, id->agno, xfs_refc_block(mp)), in xfs_ag_init_headers()
734 .numblks = BTOBB(mp->m_sb.sb_blocksize), in xfs_ag_init_headers()
738 .need_init = xfs_has_reflink(mp) in xfs_ag_init_headers()
748 id->nfree += id->agsize - mp->m_ag_prealloc_blocks; in xfs_ag_init_headers()
756 error = xfs_ag_init_hdr(mp, id, dp->work, dp->ops); in xfs_ag_init_headers()
765 struct xfs_mount *mp, in xfs_ag_shrink_space() argument
772 .mp = mp, in xfs_ag_shrink_space()
786 ASSERT(agno == mp->m_sb.sb_agcount - 1); in xfs_ag_shrink_space()
787 error = xfs_ialloc_read_agi(mp, *tpp, agno, &agibp); in xfs_ag_shrink_space()
793 error = xfs_alloc_read_agf(mp, *tpp, agno, 0, &agfbp); in xfs_ag_shrink_space()
800 if (XFS_IS_CORRUPT(mp, agf->agf_length != agi->agi_length)) in xfs_ag_shrink_space()
805 args.fsbno = XFS_AGB_TO_FSB(mp, agno, aglen - delta); in xfs_ag_shrink_space()
877 xfs_warn(mp, "Error %d reserving per-AG metadata reserve pool.", err2); in xfs_ag_shrink_space()
878 xfs_force_shutdown(mp, SHUTDOWN_CORRUPT_INCORE); in xfs_ag_shrink_space()
887 struct xfs_mount *mp, in xfs_ag_extend_space() argument
900 error = xfs_ialloc_read_agi(mp, tp, id->agno, &bp); in xfs_ag_extend_space()
906 ASSERT(id->agno == mp->m_sb.sb_agcount - 1 || in xfs_ag_extend_space()
907 be32_to_cpu(agi->agi_length) == mp->m_sb.sb_agblocks); in xfs_ag_extend_space()
913 error = xfs_alloc_read_agf(mp, tp, id->agno, 0, &bp); in xfs_ag_extend_space()
934 return xfs_free_extent(tp, XFS_AGB_TO_FSB(mp, id->agno, in xfs_ag_extend_space()
943 struct xfs_mount *mp, in xfs_ag_get_geometry() argument
955 if (agno >= mp->m_sb.sb_agcount) in xfs_ag_get_geometry()
959 error = xfs_ialloc_read_agi(mp, NULL, agno, &agi_bp); in xfs_ag_get_geometry()
962 error = xfs_alloc_read_agf(mp, NULL, agno, 0, &agf_bp); in xfs_ag_get_geometry()