Lines Matching defs:sc
42 struct xfs_scrub *sc)
44 struct xfs_mount *mp = sc->mp;
50 agno = sc->sm->sm_agno;
54 error = xfs_sb_get_secondary(mp, sc->tp, agno, &bp);
59 if (xchk_should_terminate(sc, &error))
79 xfs_trans_buf_set_type(sc->tp, bp, XFS_BLFT_SB_BUF);
80 xfs_trans_log_buf(sc->tp, bp, 0, BBTOB(bp->b_length) - 1);
87 struct xfs_scrub *sc;
102 if (xchk_should_terminate(raa->sc, &error))
118 struct xfs_scrub *sc = priv;
120 if (!xfs_verify_agbno(sc->sa.pag, agbno))
141 struct xfs_scrub *sc,
144 return xfs_verify_agbno(sc->sa.pag, fab->root) &&
159 struct xfs_scrub *sc,
168 error = xrep_find_ag_btree_roots(sc, agf_bp, fab, agfl_bp);
173 if (!xrep_check_btree_root(sc, &fab[XREP_AGF_BNOBT]) ||
174 !xrep_check_btree_root(sc, &fab[XREP_AGF_CNTBT]) ||
175 !xrep_check_btree_root(sc, &fab[XREP_AGF_RMAPBT]))
186 if (xfs_has_reflink(sc->mp) &&
187 !xrep_check_btree_root(sc, &fab[XREP_AGF_REFCOUNTBT]))
199 struct xfs_scrub *sc,
203 struct xfs_mount *mp = sc->mp;
204 struct xfs_perag *pag = sc->sa.pag;
227 struct xfs_scrub *sc,
240 if (xfs_has_reflink(sc->mp)) {
251 struct xfs_scrub *sc,
254 struct xrep_agf_allocbt raa = { .sc = sc };
257 struct xfs_mount *mp = sc->mp;
263 cur = xfs_bnobt_init_cursor(mp, sc->tp, agf_bp, sc->sa.pag);
276 cur = xfs_cntbt_init_cursor(mp, sc->tp, agf_bp, sc->sa.pag);
284 cur = xfs_rmapbt_init_cursor(mp, sc->tp, agf_bp, sc->sa.pag);
296 cur = xfs_refcountbt_init_cursor(mp, sc->tp, agf_bp,
297 sc->sa.pag);
314 struct xfs_scrub *sc,
321 xfs_force_summary_recalc(sc->mp);
324 xfs_trans_buf_set_type(sc->tp, agf_bp, XFS_BLFT_AGF_BUF);
325 xfs_trans_log_buf(sc->tp, agf_bp, 0, BBTOB(agf_bp->b_length) - 1);
328 pag = sc->sa.pag;
338 return xrep_roll_ag_trans(sc);
344 struct xfs_scrub *sc)
350 .maxlevels = sc->mp->m_alloc_maxlevels,
355 .maxlevels = sc->mp->m_alloc_maxlevels,
360 .maxlevels = sc->mp->m_rmap_maxlevels,
365 .maxlevels = sc->mp->m_refc_maxlevels,
372 struct xfs_mount *mp = sc->mp;
386 error = xfs_trans_read_buf(mp, sc->tp, mp->m_ddev_targp,
387 XFS_AG_DADDR(mp, pag_agno(sc->sa.pag),
404 error = xfs_alloc_read_agfl(sc->sa.pag, sc->tp, &agfl_bp);
412 error = xfs_agfl_walk(sc->mp, agf_bp->b_addr, agfl_bp,
413 xrep_agf_check_agfl_block, sc);
421 error = xrep_agf_find_btrees(sc, agf_bp, fab, agfl_bp);
426 if (xchk_should_terminate(sc, &error))
430 xrep_agf_init_header(sc, agf_bp, &old_agf);
431 xrep_agf_set_roots(sc, agf, fab);
432 error = xrep_agf_calc_from_btrees(sc, agf_bp);
437 return xrep_agf_commit_new(sc, agf_bp);
441 clear_bit(XFS_AGSTATE_AGF_INIT, &sc->sa.pag->pag_opstate);
461 struct xfs_scrub *sc;
474 if (xchk_should_terminate(ra->sc, &error))
513 if (xchk_should_terminate(ra->sc, &error))
532 struct xfs_scrub *sc,
538 struct xfs_mount *mp = sc->mp;
542 ra.sc = sc;
548 cur = xfs_rmapbt_init_cursor(mp, sc->tp, agf_bp, sc->sa.pag);
555 cur = xfs_bnobt_init_cursor(mp, sc->tp, agf_bp, sc->sa.pag);
562 cur = xfs_cntbt_init_cursor(mp, sc->tp, agf_bp, sc->sa.pag);
577 ra.rmap_cur = xfs_rmapbt_init_cursor(mp, sc->tp, agf_bp, sc->sa.pag);
602 struct xfs_scrub *sc,
608 ASSERT(flcount <= xfs_agfl_size(sc->mp));
611 xfs_force_summary_recalc(sc->mp);
614 if (xfs_perag_initialised_agf(sc->sa.pag)) {
615 sc->sa.pag->pagf_flcount = flcount;
617 &sc->sa.pag->pag_opstate);
624 agf->agf_fllast = cpu_to_be32(xfs_agfl_size(sc->mp) - 1);
626 xfs_alloc_log_agf(sc->tp, agf_bp,
632 struct xfs_scrub *sc;
646 struct xfs_scrub *sc = af->sc;
650 trace_xrep_agfl_insert(pag_group(sc->sa.pag), agbno, len);
668 struct xfs_scrub *sc,
674 .sc = sc,
677 struct xfs_mount *mp = sc->mp;
690 agfl->agfl_seqno = cpu_to_be32(pag_agno(sc->sa.pag));
706 xfs_trans_buf_set_type(sc->tp, agfl_bp, XFS_BLFT_AGFL_BUF);
707 xfs_trans_log_buf(sc->tp, agfl_bp, 0, BBTOB(agfl_bp->b_length) - 1);
715 struct xfs_scrub *sc)
718 struct xfs_mount *mp = sc->mp;
735 error = xfs_alloc_read_agf(sc->sa.pag, sc->tp, 0, &agf_bp);
743 error = xfs_trans_read_buf(mp, sc->tp, mp->m_ddev_targp,
744 XFS_AG_DADDR(mp, pag_agno(sc->sa.pag),
752 error = xrep_agfl_collect_blocks(sc, agf_bp, &agfl_extents, &flcount);
757 if (xchk_should_terminate(sc, &error))
765 xrep_agfl_update_agf(sc, agf_bp, flcount);
766 error = xrep_agfl_init_header(sc, agfl_bp, &agfl_extents, flcount);
775 sc->sa.agf_bp = agf_bp;
776 error = xrep_roll_ag_trans(sc);
781 error = xrep_reap_agblocks(sc, &agfl_extents, &XFS_RMAP_OINFO_AG,
807 struct xfs_scrub *sc;
853 struct xfs_scrub *sc = ragi->sc;
856 struct xfs_mount *mp = sc->mp;
860 error = xfs_alloc_read_agf(sc->sa.pag, sc->tp, 0, &agf_bp);
865 error = xrep_find_ag_btree_roots(sc, agf_bp, fab, NULL);
870 if (!xrep_check_btree_root(sc, &fab[XREP_AGI_INOBT]))
875 !xrep_check_btree_root(sc, &fab[XREP_AGI_FINOBT]))
889 struct xfs_scrub *sc = ragi->sc;
893 struct xfs_perag *pag = sc->sa.pag;
894 struct xfs_mount *mp = sc->mp;
917 struct xfs_scrub *sc = ragi->sc;
924 if (xfs_has_finobt(sc->mp)) {
935 struct xfs_scrub *sc = ragi->sc;
939 struct xfs_mount *mp = sc->mp;
944 cur = xfs_inobt_init_cursor(sc->sa.pag, sc->tp, agi_bp);
964 cur = xfs_finobt_init_cursor(sc->sa.pag, sc->tp, agi_bp);
1015 struct xfs_scrub *sc,
1020 ip = xfs_iunlink_lookup(sc->sa.pag, agino);
1039 struct xfs_scrub *sc = ragi->sc;
1044 error = xchk_iget(ragi->sc, xfs_agino_to_ino(sc->sa.pag, agino), &ip);
1065 xchk_irele(sc, ip);
1079 struct xfs_scrub *sc = ragi->sc;
1080 struct xfs_agi *agi = sc->sa.agi_bp->b_addr;
1089 if (xchk_should_terminate(ragi->sc, &error))
1092 trace_xrep_iunlink_walk_ondisk_bucket(sc->sa.pag, bucket,
1098 next_agino = xrep_iunlink_next(sc, agino);
1135 struct xfs_mount *mp = ragi->sc->mp;
1141 ASSERT(XFS_INO_TO_AGNO(mp, ip->i_ino) == pag_agno(ragi->sc->sa.pag));
1147 trace_xrep_iunlink_visit(ragi->sc->sa.pag, bucket,
1171 struct xfs_perag *pag = ragi->sc->sa.pag;
1181 if (xchk_should_terminate(ragi->sc, &error))
1243 struct xfs_scrub *sc = ragi->sc;
1269 ip = radix_tree_lookup(&sc->sa.pag->pag_ici_root, agino);
1279 error = xchk_iget(ragi->sc, xfs_agino_to_ino(sc->sa.pag, agino),
1288 xchk_irele(sc, ip);
1305 struct xfs_scrub *sc = ragi->sc;
1310 cur = xfs_inobt_init_cursor(sc->sa.pag, sc->tp, agi_bp);
1325 struct xfs_scrub *sc = ragi->sc;
1332 if (xchk_should_terminate(ragi->sc, &error))
1336 ip = xfs_iunlink_lookup(sc->sa.pag, next_agino);
1339 trace_xrep_iunlink_resolve_uncached(sc->sa.pag,
1351 trace_xrep_iunlink_resolve_wronglist(sc->sa.pag,
1365 trace_xrep_iunlink_resolve_nolist(sc->sa.pag,
1371 trace_xrep_iunlink_resolve_ok(sc->sa.pag, bucket, prev_agino,
1426 trace_xrep_iunlink_add_to_bucket(ragi->sc->sa.pag, bucket, agino,
1529 struct xfs_scrub *sc = ragi->sc;
1530 struct xfs_perag *pag = sc->sa.pag;
1544 error = xchk_iget(sc, xfs_agino_to_ino(pag, agino), &ip);
1561 error = xfs_iunlink_log_inode(sc->tp, ip, pag, next_agino);
1576 xchk_irele(sc, ip);
1587 struct xfs_scrub *sc = ragi->sc;
1588 struct xfs_perag *pag = sc->sa.pag;
1604 error = xchk_iget(sc, xfs_agino_to_ino(pag, agino), &ip);
1615 error = xfs_iunlink_log_inode(sc->tp, ip, pag, next_agino);
1636 xchk_irele(sc, ip);
1668 trace_xrep_iunlink_commit_bucket(ragi->sc->sa.pag, i,
1683 struct xfs_scrub *sc = ragi->sc;
1689 xfs_force_summary_recalc(sc->mp);
1692 xfs_trans_buf_set_type(sc->tp, agi_bp, XFS_BLFT_AGI_BUF);
1693 xfs_trans_log_buf(sc->tp, agi_bp, 0, BBTOB(agi_bp->b_length) - 1);
1696 pag = sc->sa.pag;
1701 return xrep_roll_ag_trans(sc);
1707 struct xfs_scrub *sc)
1710 struct xfs_mount *mp = sc->mp;
1719 sc->buf = kzalloc(sizeof(struct xrep_agi), XCHK_GFP_FLAGS);
1720 if (!sc->buf)
1722 ragi = sc->buf;
1723 ragi->sc = sc;
1728 .maxlevels = M_IGEO(sc->mp)->inobt_maxlevels,
1733 .maxlevels = M_IGEO(sc->mp)->inobt_maxlevels,
1743 sc->buf_cleanup = xrep_agi_buf_cleanup;
1745 descr = xchk_xfile_ag_descr(sc, "iunlinked next pointers");
1752 descr = xchk_xfile_ag_descr(sc, "iunlinked prev pointers");
1763 error = xfs_trans_read_buf(mp, sc->tp, mp->m_ddev_targp,
1764 XFS_AG_DADDR(mp, pag_agno(sc->sa.pag),
1781 if (xchk_should_terminate(sc, &error))
1799 clear_bit(XFS_AGSTATE_AGI_INIT, &sc->sa.pag->pag_opstate);