Lines Matching refs:sc

42 	struct xfs_scrub	*sc)  in xrep_attempt()  argument
46 trace_xrep_attempt(XFS_I(file_inode(sc->file)), sc->sm, error); in xrep_attempt()
48 xchk_ag_btcur_free(&sc->sa); in xrep_attempt()
51 ASSERT(sc->ops->repair); in xrep_attempt()
52 error = sc->ops->repair(sc); in xrep_attempt()
53 trace_xrep_done(XFS_I(file_inode(sc->file)), sc->sm, error); in xrep_attempt()
60 sc->sm->sm_flags &= ~XFS_SCRUB_FLAGS_OUT; in xrep_attempt()
61 sc->flags |= XREP_ALREADY_FIXED; in xrep_attempt()
65 if (!(sc->flags & XCHK_TRY_HARDER)) { in xrep_attempt()
66 sc->flags |= XCHK_TRY_HARDER; in xrep_attempt()
108 struct xfs_scrub *sc) in xrep_probe() argument
112 if (xchk_should_terminate(sc, &error)) in xrep_probe()
124 struct xfs_scrub *sc) in xrep_roll_ag_trans() argument
137 if (sc->sa.agi_bp) { in xrep_roll_ag_trans()
138 xfs_ialloc_log_agi(sc->tp, sc->sa.agi_bp, XFS_AGI_MAGICNUM); in xrep_roll_ag_trans()
139 xfs_trans_bhold(sc->tp, sc->sa.agi_bp); in xrep_roll_ag_trans()
142 if (sc->sa.agf_bp) { in xrep_roll_ag_trans()
143 xfs_alloc_log_agf(sc->tp, sc->sa.agf_bp, XFS_AGF_MAGICNUM); in xrep_roll_ag_trans()
144 xfs_trans_bhold(sc->tp, sc->sa.agf_bp); in xrep_roll_ag_trans()
153 error = xfs_trans_roll(&sc->tp); in xrep_roll_ag_trans()
158 if (sc->sa.agi_bp) in xrep_roll_ag_trans()
159 xfs_trans_bjoin(sc->tp, sc->sa.agi_bp); in xrep_roll_ag_trans()
160 if (sc->sa.agf_bp) in xrep_roll_ag_trans()
161 xfs_trans_bjoin(sc->tp, sc->sa.agf_bp); in xrep_roll_ag_trans()
189 struct xfs_scrub *sc) in xrep_calc_ag_resblks() argument
191 struct xfs_mount *mp = sc->mp; in xrep_calc_ag_resblks()
192 struct xfs_scrub_metadata *sm = sc->sm; in xrep_calc_ag_resblks()
300 struct xfs_scrub *sc, in xrep_alloc_ag_block() argument
312 error = xfs_alloc_get_freelist(sc->sa.pag, sc->tp, in xrep_alloc_ag_block()
313 sc->sa.agf_bp, &bno, 1); in xrep_alloc_ag_block()
318 xfs_extent_busy_reuse(sc->mp, sc->sa.pag, bno, 1, false); in xrep_alloc_ag_block()
319 *fsbno = XFS_AGB_TO_FSB(sc->mp, sc->sa.pag->pag_agno, bno); in xrep_alloc_ag_block()
321 xfs_ag_resv_rmapbt_alloc(sc->mp, sc->sa.pag->pag_agno); in xrep_alloc_ag_block()
327 args.tp = sc->tp; in xrep_alloc_ag_block()
328 args.mp = sc->mp; in xrep_alloc_ag_block()
329 args.pag = sc->sa.pag; in xrep_alloc_ag_block()
336 error = xfs_alloc_vextent_this_ag(&args, sc->sa.pag->pag_agno); in xrep_alloc_ag_block()
350 struct xfs_scrub *sc, in xrep_init_btblock() argument
356 struct xfs_trans *tp = sc->tp; in xrep_init_btblock()
357 struct xfs_mount *mp = sc->mp; in xrep_init_btblock()
364 ASSERT(XFS_FSB_TO_AGNO(mp, fsb) == sc->sa.pag->pag_agno); in xrep_init_btblock()
371 xfs_btree_init_block(mp, bp, btnum, 0, 0, sc->sa.pag->pag_agno); in xrep_init_btblock()
451 struct xfs_scrub *sc, in xrep_invalidate_blocks() argument
471 if (!xfs_verify_fsbno(sc->mp, fsbno)) in xrep_invalidate_blocks()
473 error = xfs_buf_incore(sc->mp->m_ddev_targp, in xrep_invalidate_blocks()
474 XFS_FSB_TO_DADDR(sc->mp, fsbno), in xrep_invalidate_blocks()
475 XFS_FSB_TO_BB(sc->mp, 1), XBF_TRYLOCK, &bp); in xrep_invalidate_blocks()
479 xfs_trans_bjoin(sc->tp, bp); in xrep_invalidate_blocks()
480 xfs_trans_binval(sc->tp, bp); in xrep_invalidate_blocks()
489 struct xfs_scrub *sc, in xrep_fix_freelist() argument
494 args.mp = sc->mp; in xrep_fix_freelist()
495 args.tp = sc->tp; in xrep_fix_freelist()
496 args.agno = sc->sa.pag->pag_agno; in xrep_fix_freelist()
498 args.pag = sc->sa.pag; in xrep_fix_freelist()
509 struct xfs_scrub *sc, in xrep_put_freelist() argument
516 error = xrep_fix_freelist(sc, true); in xrep_put_freelist()
525 error = xfs_rmap_alloc(sc->tp, sc->sa.agf_bp, sc->sa.pag, agbno, 1, in xrep_put_freelist()
531 error = xfs_alloc_read_agfl(sc->sa.pag, sc->tp, &agfl_bp); in xrep_put_freelist()
535 error = xfs_alloc_put_freelist(sc->sa.pag, sc->tp, sc->sa.agf_bp, in xrep_put_freelist()
539 xfs_extent_busy_insert(sc->tp, sc->sa.pag, agbno, 1, in xrep_put_freelist()
548 struct xfs_scrub *sc, in xrep_reap_block() argument
559 agbno = XFS_FSB_TO_AGBNO(sc->mp, fsbno); in xrep_reap_block()
560 ASSERT(XFS_FSB_TO_AGNO(sc->mp, fsbno) == sc->sa.pag->pag_agno); in xrep_reap_block()
567 if (sc->ip) { in xrep_reap_block()
568 error = xfs_alloc_read_agf(sc->sa.pag, sc->tp, 0, &agf_bp); in xrep_reap_block()
572 agf_bp = sc->sa.agf_bp; in xrep_reap_block()
574 cur = xfs_rmapbt_init_cursor(sc->mp, sc->tp, agf_bp, sc->sa.pag); in xrep_reap_block()
596 error = xfs_rmap_free(sc->tp, agf_bp, sc->sa.pag, agbno, in xrep_reap_block()
599 error = xrep_put_freelist(sc, agbno); in xrep_reap_block()
601 error = xfs_free_extent(sc->tp, fsbno, 1, oinfo, resv); in xrep_reap_block()
602 if (agf_bp != sc->sa.agf_bp) in xrep_reap_block()
603 xfs_trans_brelse(sc->tp, agf_bp); in xrep_reap_block()
607 if (sc->ip) in xrep_reap_block()
608 return xfs_trans_roll_inode(&sc->tp, sc->ip); in xrep_reap_block()
609 return xrep_roll_ag_trans(sc); in xrep_reap_block()
612 if (agf_bp != sc->sa.agf_bp) in xrep_reap_block()
613 xfs_trans_brelse(sc->tp, agf_bp); in xrep_reap_block()
620 struct xfs_scrub *sc, in xrep_reap_extents() argument
630 ASSERT(xfs_has_rmapbt(sc->mp)); in xrep_reap_extents()
633 ASSERT(sc->ip != NULL || in xrep_reap_extents()
634 XFS_FSB_TO_AGNO(sc->mp, fsbno) == sc->sa.pag->pag_agno); in xrep_reap_extents()
635 trace_xrep_dispose_btree_extent(sc->mp, in xrep_reap_extents()
636 XFS_FSB_TO_AGNO(sc->mp, fsbno), in xrep_reap_extents()
637 XFS_FSB_TO_AGBNO(sc->mp, fsbno), 1); in xrep_reap_extents()
639 error = xrep_reap_block(sc, fsbno, oinfo, type); in xrep_reap_extents()
675 struct xfs_scrub *sc; member
702 struct xfs_mount *mp = ri->sc->mp; in xrep_findroot_block()
709 daddr = XFS_AGB_TO_DADDR(mp, ri->sc->sa.pag->pag_agno, agbno); in xrep_findroot_block()
744 error = xfs_trans_read_buf(mp, ri->sc->tp, mp->m_ddev_targp, daddr, in xrep_findroot_block()
838 trace_xrep_findroot_block(mp, ri->sc->sa.pag->pag_agno, agbno, in xrep_findroot_block()
841 xfs_trans_brelse(ri->sc->tp, bp); in xrep_findroot_block()
887 struct xfs_scrub *sc, in xrep_find_ag_btree_roots() argument
892 struct xfs_mount *mp = sc->mp; in xrep_find_ag_btree_roots()
901 ri.sc = sc; in xrep_find_ag_btree_roots()
912 cur = xfs_rmapbt_init_cursor(mp, sc->tp, agf_bp, sc->sa.pag); in xrep_find_ag_btree_roots()
922 struct xfs_scrub *sc, in xrep_force_quotacheck() argument
928 if (!(flag & sc->mp->m_qflags)) in xrep_force_quotacheck()
931 mutex_lock(&sc->mp->m_quotainfo->qi_quotaofflock); in xrep_force_quotacheck()
932 sc->mp->m_qflags &= ~flag; in xrep_force_quotacheck()
933 spin_lock(&sc->mp->m_sb_lock); in xrep_force_quotacheck()
934 sc->mp->m_sb.sb_qflags &= ~flag; in xrep_force_quotacheck()
935 spin_unlock(&sc->mp->m_sb_lock); in xrep_force_quotacheck()
936 xfs_log_sb(sc->tp); in xrep_force_quotacheck()
937 mutex_unlock(&sc->mp->m_quotainfo->qi_quotaofflock); in xrep_force_quotacheck()
952 struct xfs_scrub *sc) in xrep_ino_dqattach() argument
956 error = xfs_qm_dqattach_locked(sc->ip, false); in xrep_ino_dqattach()
961 xfs_err_ratelimited(sc->mp, in xrep_ino_dqattach()
963 (unsigned long long)sc->ip->i_ino, error); in xrep_ino_dqattach()
964 if (XFS_IS_UQUOTA_ON(sc->mp) && !sc->ip->i_udquot) in xrep_ino_dqattach()
965 xrep_force_quotacheck(sc, XFS_DQTYPE_USER); in xrep_ino_dqattach()
966 if (XFS_IS_GQUOTA_ON(sc->mp) && !sc->ip->i_gdquot) in xrep_ino_dqattach()
967 xrep_force_quotacheck(sc, XFS_DQTYPE_GROUP); in xrep_ino_dqattach()
968 if (XFS_IS_PQUOTA_ON(sc->mp) && !sc->ip->i_pdquot) in xrep_ino_dqattach()
969 xrep_force_quotacheck(sc, XFS_DQTYPE_PROJ); in xrep_ino_dqattach()