Lines Matching full:ri

140 	struct xrep_ibt		*ri,  in xrep_ibt_check_ifree()  argument
146 struct xfs_scrub *sc = ri->sc; in xrep_ibt_check_ifree()
166 be64_to_cpu(dip->di_ino) != xfs_agino_to_ino(ri->sc->sa.pag, agino)) in xrep_ibt_check_ifree()
181 struct xrep_ibt *ri) in xrep_ibt_stash() argument
185 if (xchk_should_terminate(ri->sc, &error)) in xrep_ibt_stash()
188 ri->rie.ir_freecount = xfs_inobt_rec_freecount(&ri->rie); in xrep_ibt_stash()
189 if (xfs_inobt_check_irec(ri->sc->sa.pag, &ri->rie) != NULL) in xrep_ibt_stash()
192 if (ri->rie.ir_freecount > 0) in xrep_ibt_stash()
193 ri->finobt_recs++; in xrep_ibt_stash()
195 trace_xrep_ibt_found(ri->sc->sa.pag, &ri->rie); in xrep_ibt_stash()
197 error = xfarray_append(ri->inode_records, &ri->rie); in xrep_ibt_stash()
201 ri->rie.ir_startino = NULLAGINO; in xrep_ibt_stash()
219 struct xrep_ibt *ri, in xrep_ibt_cluster_record() argument
224 struct xfs_scrub *sc = ri->sc; in xrep_ibt_cluster_record()
240 if (ri->rie.ir_startino != NULLAGINO && in xrep_ibt_cluster_record()
241 ri->rie.ir_startino + XFS_INODES_PER_CHUNK <= ir_startino) { in xrep_ibt_cluster_record()
242 error = xrep_ibt_stash(ri); in xrep_ibt_cluster_record()
247 if (ri->rie.ir_startino == NULLAGINO) { in xrep_ibt_cluster_record()
248 ri->rie.ir_startino = ir_startino; in xrep_ibt_cluster_record()
249 ri->rie.ir_free = XFS_INOBT_ALL_FREE; in xrep_ibt_cluster_record()
250 ri->rie.ir_holemask = 0xFFFF; in xrep_ibt_cluster_record()
251 ri->rie.ir_count = 0; in xrep_ibt_cluster_record()
255 ri->icount += nr_inodes; in xrep_ibt_cluster_record()
256 ri->rie.ir_count += nr_inodes; in xrep_ibt_cluster_record()
257 ri->rie.ir_holemask &= ~xfs_inobt_maskn( in xrep_ibt_cluster_record()
265 error = xrep_ibt_check_ifree(ri, cluster_ir_startino, in xrep_ibt_cluster_record()
271 ri->iused++; in xrep_ibt_cluster_record()
272 ri->rie.ir_free &= ~XFS_INOBT_MASK(cluster_base + in xrep_ibt_cluster_record()
287 struct xrep_ibt *ri, in xrep_ibt_process_cluster() argument
292 struct xfs_scrub *sc = ri->sc; in xrep_ibt_process_cluster()
323 error = xrep_ibt_cluster_record(ri, in xrep_ibt_process_cluster()
397 struct xrep_ibt *ri, in xrep_ibt_record_old_btree_blocks() argument
400 if (!xfs_verify_agbext(ri->sc->sa.pag, rec->rm_startblock, in xrep_ibt_record_old_btree_blocks()
404 return xagb_bitmap_set(&ri->old_iallocbt_blocks, rec->rm_startblock, in xrep_ibt_record_old_btree_blocks()
411 struct xrep_ibt *ri, in xrep_ibt_record_inode_blocks() argument
414 struct xfs_mount *mp = ri->sc->mp; in xrep_ibt_record_inode_blocks()
419 error = xrep_ibt_check_inode_ext(ri->sc, rec->rm_startblock, in xrep_ibt_record_inode_blocks()
424 trace_xrep_ibt_walk_rmap(ri->sc->sa.pag, rec); in xrep_ibt_record_inode_blocks()
433 error = xrep_ibt_process_cluster(ri, in xrep_ibt_record_inode_blocks()
448 struct xrep_ibt *ri = priv; in xrep_ibt_walk_rmap() local
451 if (xchk_should_terminate(ri->sc, &error)) in xrep_ibt_walk_rmap()
456 return xrep_ibt_record_old_btree_blocks(ri, rec); in xrep_ibt_walk_rmap()
458 return xrep_ibt_record_inode_blocks(ri, rec); in xrep_ibt_walk_rmap()
471 struct xrep_ibt *ri) in xrep_ibt_find_inodes() argument
473 struct xfs_scrub *sc = ri->sc; in xrep_ibt_find_inodes()
476 ri->rie.ir_startino = NULLAGINO; in xrep_ibt_find_inodes()
480 error = xfs_rmap_query_all(sc->sa.rmap_cur, xrep_ibt_walk_rmap, ri); in xrep_ibt_find_inodes()
486 if (ri->rie.ir_startino != NULLAGINO) in xrep_ibt_find_inodes()
487 return xrep_ibt_stash(ri); in xrep_ibt_find_inodes()
495 struct xrep_ibt *ri) in xrep_ibt_reset_counters() argument
497 struct xfs_scrub *sc = ri->sc; in xrep_ibt_reset_counters()
499 unsigned int freecount = ri->icount - ri->iused; in xrep_ibt_reset_counters()
508 agi->agi_count = cpu_to_be32(ri->icount); in xrep_ibt_reset_counters()
527 struct xrep_ibt *ri = priv; in xrep_fibt_get_records() local
534 error = xfarray_load(ri->inode_records, in xrep_fibt_get_records()
535 ri->array_cur++, irec); in xrep_fibt_get_records()
557 struct xrep_ibt *ri = priv; in xrep_ibt_get_records() local
563 error = xfarray_load(ri->inode_records, ri->array_cur++, irec); in xrep_ibt_get_records()
581 struct xrep_ibt *ri = priv; in xrep_ibt_claim_block() local
583 return xrep_newbt_claim_block(cur, &ri->new_inobt, ptr); in xrep_ibt_claim_block()
593 struct xrep_ibt *ri = priv; in xrep_fibt_claim_block() local
595 return xrep_newbt_claim_block(cur, &ri->new_finobt, ptr); in xrep_fibt_claim_block()
601 struct xrep_ibt *ri) in xrep_ibt_check_overlap() argument
608 foreach_xfarray_idx(ri->inode_records, cur) { in xrep_ibt_check_overlap()
609 if (xchk_should_terminate(ri->sc, &error)) in xrep_ibt_check_overlap()
612 error = xfarray_load(ri->inode_records, cur, &irec); in xrep_ibt_check_overlap()
628 struct xrep_ibt *ri) in xrep_ibt_build_new_trees() argument
630 struct xfs_scrub *sc = ri->sc; in xrep_ibt_build_new_trees()
644 error = xrep_ibt_check_overlap(ri); in xrep_ibt_build_new_trees()
654 xrep_newbt_init_ag(&ri->new_inobt, sc, &XFS_RMAP_OINFO_INOBT, in xrep_ibt_build_new_trees()
657 ri->new_inobt.bload.claim_block = xrep_ibt_claim_block; in xrep_ibt_build_new_trees()
658 ri->new_inobt.bload.get_records = xrep_ibt_get_records; in xrep_ibt_build_new_trees()
661 xfs_btree_stage_afakeroot(ino_cur, &ri->new_inobt.afake); in xrep_ibt_build_new_trees()
662 error = xfs_btree_bload_compute_geometry(ino_cur, &ri->new_inobt.bload, in xrep_ibt_build_new_trees()
663 xfarray_length(ri->inode_records)); in xrep_ibt_build_new_trees()
674 xrep_newbt_init_ag(&ri->new_finobt, sc, &XFS_RMAP_OINFO_INOBT, in xrep_ibt_build_new_trees()
677 ri->new_finobt.bload.claim_block = xrep_fibt_claim_block; in xrep_ibt_build_new_trees()
678 ri->new_finobt.bload.get_records = xrep_fibt_get_records; in xrep_ibt_build_new_trees()
681 xfs_btree_stage_afakeroot(fino_cur, &ri->new_finobt.afake); in xrep_ibt_build_new_trees()
683 &ri->new_finobt.bload, ri->finobt_recs); in xrep_ibt_build_new_trees()
693 error = xrep_newbt_alloc_blocks(&ri->new_inobt, in xrep_ibt_build_new_trees()
694 ri->new_inobt.bload.nr_blocks); in xrep_ibt_build_new_trees()
699 error = xrep_newbt_alloc_blocks(&ri->new_finobt, in xrep_ibt_build_new_trees()
700 ri->new_finobt.bload.nr_blocks); in xrep_ibt_build_new_trees()
706 ri->array_cur = XFARRAY_CURSOR_INIT; in xrep_ibt_build_new_trees()
707 error = xfs_btree_bload(ino_cur, &ri->new_inobt.bload, ri); in xrep_ibt_build_new_trees()
713 ri->array_cur = XFARRAY_CURSOR_INIT; in xrep_ibt_build_new_trees()
714 error = xfs_btree_bload(fino_cur, &ri->new_finobt.bload, ri); in xrep_ibt_build_new_trees()
732 error = xrep_ibt_reset_counters(ri); in xrep_ibt_build_new_trees()
738 error = xrep_newbt_commit(&ri->new_finobt); in xrep_ibt_build_new_trees()
742 error = xrep_newbt_commit(&ri->new_inobt); in xrep_ibt_build_new_trees()
755 xrep_newbt_cancel(&ri->new_finobt); in xrep_ibt_build_new_trees()
757 xrep_newbt_cancel(&ri->new_inobt); in xrep_ibt_build_new_trees()
767 struct xrep_ibt *ri) in xrep_ibt_remove_old_trees() argument
769 struct xfs_scrub *sc = ri->sc; in xrep_ibt_remove_old_trees()
778 error = xrep_reap_agblocks(sc, &ri->old_iallocbt_blocks, in xrep_ibt_remove_old_trees()
798 struct xrep_ibt *ri; in xrep_iallocbt() local
808 ri = kzalloc(sizeof(struct xrep_ibt), XCHK_GFP_FLAGS); in xrep_iallocbt()
809 if (!ri) in xrep_iallocbt()
811 ri->sc = sc; in xrep_iallocbt()
822 &ri->inode_records); in xrep_iallocbt()
828 xagb_bitmap_init(&ri->old_iallocbt_blocks); in xrep_iallocbt()
829 error = xrep_ibt_find_inodes(ri); in xrep_iallocbt()
834 error = xrep_ibt_build_new_trees(ri); in xrep_iallocbt()
839 error = xrep_ibt_remove_old_trees(ri); in xrep_iallocbt()
844 xagb_bitmap_destroy(&ri->old_iallocbt_blocks); in xrep_iallocbt()
845 xfarray_destroy(ri->inode_records); in xrep_iallocbt()
847 kfree(ri); in xrep_iallocbt()