/* Flag failures for records that could be merged. */ STATICvoid
xchk_allocbt_mergeable( struct xchk_btree *bs, struct xchk_alloc *ca, conststruct xfs_alloc_rec_incore *irec)
{ if (bs->sc->sm->sm_flags & XFS_SCRUB_OFLAG_CORRUPT) return;
xchk_allocbt_mergeable(bs, ca, &irec);
xchk_allocbt_xref(bs->sc, &irec);
return 0;
}
/* Scrub one of the freespace btrees for some AG. */ int
xchk_allocbt( struct xfs_scrub *sc)
{ struct xchk_alloc ca = { }; struct xfs_btree_cur *cur;
switch (sc->sm->sm_type) { case XFS_SCRUB_TYPE_BNOBT:
cur = sc->sa.bno_cur; break; case XFS_SCRUB_TYPE_CNTBT:
cur = sc->sa.cnt_cur; break; default:
ASSERT(0); return -EIO;
}
/* xref check that the extent is not free */ void
xchk_xref_is_used_space( struct xfs_scrub *sc,
xfs_agblock_t agbno,
xfs_extlen_t len)
{ enum xbtree_recpacking outcome; int error;
if (!sc->sa.bno_cur || xchk_skip_xref(sc->sm)) return;
error = xfs_alloc_has_records(sc->sa.bno_cur, agbno, len, &outcome); if (!xchk_should_check_xref(sc, &error, &sc->sa.bno_cur)) return; if (outcome != XBTREE_RECPACKING_EMPTY)
xchk_btree_xref_set_corrupt(sc, sc->sa.bno_cur, 0);
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.