Lines Matching full:ri

152 	struct xrep_inode	*ri;  in xrep_setup_inode()  local
158 ri = sc->buf; in xrep_setup_inode()
159 memcpy(&ri->imap, imap, sizeof(struct xfs_imap)); in xrep_setup_inode()
160 ri->sc = sc; in xrep_setup_inode()
254 struct xrep_inode *ri = priv; in xrep_dinode_findmode_dirent() local
257 if (xchk_should_terminate(ri->sc, &error)) in xrep_dinode_findmode_dirent()
276 if (ri->alleged_ftype != XFS_DIR3_FT_UNKNOWN && in xrep_dinode_findmode_dirent()
277 ri->alleged_ftype != name->type) { in xrep_dinode_findmode_dirent()
278 trace_xrep_dinode_findmode_dirent_inval(ri->sc, dp, name->type, in xrep_dinode_findmode_dirent()
279 ri->alleged_ftype); in xrep_dinode_findmode_dirent()
284 trace_xrep_dinode_findmode_dirent(ri->sc, dp, name->type); in xrep_dinode_findmode_dirent()
285 ri->alleged_ftype = name->type; in xrep_dinode_findmode_dirent()
309 struct xrep_inode *ri, in xrep_dinode_trylock_directory() argument
318 if (xchk_should_terminate(ri->sc, &error)) in xrep_dinode_trylock_directory()
340 struct xrep_inode *ri, in xrep_dinode_findmode_walk_directory() argument
343 struct xfs_scrub *sc = ri->sc; in xrep_dinode_findmode_walk_directory()
355 error = xrep_dinode_trylock_directory(ri, dp, &lock_mode); in xrep_dinode_findmode_walk_directory()
379 error = xchk_dir_walk(sc, dp, xrep_dinode_findmode_dirent, ri); in xrep_dinode_findmode_walk_directory()
394 struct xrep_inode *ri, in xrep_dinode_find_mode() argument
397 struct xfs_scrub *sc = ri->sc; in xrep_dinode_find_mode()
413 xchk_iscan_start(sc, 5000, 100, &ri->ftype_iscan); in xrep_dinode_find_mode()
414 xchk_iscan_set_agi_trylock(&ri->ftype_iscan); in xrep_dinode_find_mode()
415 ri->ftype_iscan.skip_ino = sc->sm->sm_ino; in xrep_dinode_find_mode()
416 ri->alleged_ftype = XFS_DIR3_FT_UNKNOWN; in xrep_dinode_find_mode()
417 while ((error = xchk_iscan_iter(&ri->ftype_iscan, &dp)) == 1) { in xrep_dinode_find_mode()
419 error = xrep_dinode_findmode_walk_directory(ri, dp); in xrep_dinode_find_mode()
420 xchk_iscan_mark_visited(&ri->ftype_iscan, dp); in xrep_dinode_find_mode()
427 xchk_iscan_iter_finish(&ri->ftype_iscan); in xrep_dinode_find_mode()
428 xchk_iscan_teardown(&ri->ftype_iscan); in xrep_dinode_find_mode()
431 if (ri->alleged_ftype != XFS_DIR3_FT_UNKNOWN) { in xrep_dinode_find_mode()
455 switch (ri->alleged_ftype) { in xrep_dinode_find_mode()
485 struct xrep_inode *ri, in xrep_dinode_mode() argument
488 struct xfs_scrub *sc = ri->sc; in xrep_dinode_mode()
498 error = xrep_dinode_find_mode(ri, &mode); in xrep_dinode_mode()
518 ri->zap_acls = true; in xrep_dinode_mode()
596 struct xrep_inode *ri, in xrep_dinode_zap_symlink() argument
599 struct xfs_scrub *sc = ri->sc; in xrep_dinode_zap_symlink()
608 ri->ino_sick_mask |= XFS_SICK_INO_SYMLINK_ZAPPED; in xrep_dinode_zap_symlink()
619 struct xrep_inode *ri, in xrep_dinode_zap_dir() argument
622 struct xfs_scrub *sc = ri->sc; in xrep_dinode_zap_dir()
636 ri->ino_sick_mask |= XFS_SICK_INO_DIR_ZAPPED; in xrep_dinode_zap_dir()
642 struct xrep_inode *ri, in xrep_dinode_size() argument
645 struct xfs_scrub *sc = ri->sc; in xrep_dinode_size()
673 xrep_dinode_zap_symlink(ri, dip); in xrep_dinode_size()
685 xrep_dinode_zap_dir(ri, dip); in xrep_dinode_size()
731 struct xrep_inode *ri = priv; in xrep_dinode_walk_rmap() local
734 if (xchk_should_terminate(ri->sc, &error)) in xrep_dinode_walk_rmap()
738 if (rec->rm_owner != ri->sc->sm->sm_ino) in xrep_dinode_walk_rmap()
742 ri->attr_blocks += rec->rm_blockcount; in xrep_dinode_walk_rmap()
744 ri->attr_extents++; in xrep_dinode_walk_rmap()
749 ri->data_blocks += rec->rm_blockcount; in xrep_dinode_walk_rmap()
751 ri->data_extents++; in xrep_dinode_walk_rmap()
759 struct xrep_inode *ri, in xrep_dinode_count_ag_rmaps() argument
766 error = xfs_alloc_read_agf(pag, ri->sc->tp, 0, &agf); in xrep_dinode_count_ag_rmaps()
770 cur = xfs_rmapbt_init_cursor(ri->sc->mp, ri->sc->tp, agf, pag); in xrep_dinode_count_ag_rmaps()
771 error = xfs_rmap_query_all(cur, xrep_dinode_walk_rmap, ri); in xrep_dinode_count_ag_rmaps()
773 xfs_trans_brelse(ri->sc->tp, agf); in xrep_dinode_count_ag_rmaps()
784 struct xrep_inode *ri = priv; in xrep_dinode_walk_rtrmap() local
787 if (xchk_should_terminate(ri->sc, &error)) in xrep_dinode_walk_rtrmap()
791 if (rec->rm_owner != ri->sc->sm->sm_ino) in xrep_dinode_walk_rtrmap()
797 ri->rt_blocks += rec->rm_blockcount; in xrep_dinode_walk_rtrmap()
798 ri->rt_extents++; in xrep_dinode_walk_rtrmap()
805 struct xrep_inode *ri, in xrep_dinode_count_rtgroup_rmaps() argument
808 struct xfs_scrub *sc = ri->sc; in xrep_dinode_count_rtgroup_rmaps()
816 ri); in xrep_dinode_count_rtgroup_rmaps()
825 struct xrep_inode *ri) in xrep_dinode_count_rmaps() argument
831 if (!xfs_has_rmapbt(ri->sc->mp)) in xrep_dinode_count_rmaps()
834 while ((rtg = xfs_rtgroup_next(ri->sc->mp, rtg))) { in xrep_dinode_count_rmaps()
835 error = xrep_dinode_count_rtgroup_rmaps(ri, rtg); in xrep_dinode_count_rmaps()
842 while ((pag = xfs_perag_next(ri->sc->mp, pag))) { in xrep_dinode_count_rmaps()
843 error = xrep_dinode_count_ag_rmaps(ri, pag); in xrep_dinode_count_rmaps()
851 if (ri->data_extents && ri->rt_extents) in xrep_dinode_count_rmaps()
854 trace_xrep_dinode_count_rmaps(ri->sc, in xrep_dinode_count_rmaps()
855 ri->data_blocks, ri->rt_blocks, ri->attr_blocks, in xrep_dinode_count_rmaps()
856 ri->data_extents, ri->rt_extents, ri->attr_extents); in xrep_dinode_count_rmaps()
1150 struct xrep_inode *ri, in xrep_dinode_zap_dfork() argument
1154 struct xfs_scrub *sc = ri->sc; in xrep_dinode_zap_dfork()
1158 ri->ino_sick_mask |= XFS_SICK_INO_BMBTD_ZAPPED; in xrep_dinode_zap_dfork()
1161 ri->data_blocks = 0; in xrep_dinode_zap_dfork()
1162 ri->rt_blocks = 0; in xrep_dinode_zap_dfork()
1179 if (ri->data_extents || ri->rt_extents || S_ISREG(mode)) { in xrep_dinode_zap_dfork()
1187 xrep_dinode_zap_symlink(ri, dip); in xrep_dinode_zap_dfork()
1190 xrep_dinode_zap_dir(ri, dip); in xrep_dinode_zap_dfork()
1256 struct xrep_inode *ri, in xrep_dinode_zap_afork() argument
1260 struct xfs_scrub *sc = ri->sc; in xrep_dinode_zap_afork()
1264 ri->ino_sick_mask |= XFS_SICK_INO_BMBTA_ZAPPED; in xrep_dinode_zap_afork()
1268 ri->attr_blocks = 0; in xrep_dinode_zap_afork()
1285 struct xrep_inode *ri, in xrep_dinode_ensure_forkoff() argument
1292 struct xfs_scrub *sc = ri->sc; in xrep_dinode_ensure_forkoff()
1329 } else if (ri->attr_extents > 0) { in xrep_dinode_ensure_forkoff()
1380 } else if (ri->data_extents > 0 || ri->rt_extents > 0) { in xrep_dinode_ensure_forkoff()
1435 (ri->data_extents > 0 || ri->rt_extents > 0) && in xrep_dinode_ensure_forkoff()
1442 xrep_dinode_zap_afork(ri, dip, mode); in xrep_dinode_ensure_forkoff()
1461 ri->attr_extents > 0 && in xrep_dinode_ensure_forkoff()
1474 xrep_dinode_zap_afork(ri, dip, mode); in xrep_dinode_ensure_forkoff()
1493 struct xrep_inode *ri, in xrep_dinode_zap_forks() argument
1496 struct xfs_scrub *sc = ri->sc; in xrep_dinode_zap_forks()
1502 bool zap_attrfork = ri->zap_acls; in xrep_dinode_zap_forks()
1527 xrep_dinode_zap_afork(ri, dip, mode); in xrep_dinode_zap_forks()
1529 xrep_dinode_zap_dfork(ri, dip, mode); in xrep_dinode_zap_forks()
1530 xrep_dinode_ensure_forkoff(ri, dip, mode); in xrep_dinode_zap_forks()
1545 struct xrep_inode *ri) in xrep_dinode_core() argument
1547 struct xfs_scrub *sc = ri->sc; in xrep_dinode_core()
1555 error = xrep_dinode_count_rmaps(ri); in xrep_dinode_core()
1561 ri->imap.im_blkno, ri->imap.im_len, XBF_UNMAPPED, &bp, in xrep_dinode_core()
1571 dip = xfs_buf_offset(bp, ri->imap.im_boffset); in xrep_dinode_core()
1573 iget_error = xrep_dinode_mode(ri, dip); in xrep_dinode_core()
1577 xrep_dinode_flags(sc, dip, ri->rt_extents > 0); in xrep_dinode_core()
1578 xrep_dinode_size(ri, dip); in xrep_dinode_core()
1580 xrep_dinode_zap_forks(ri, dip); in xrep_dinode_core()
1587 xfs_trans_log_buf(sc->tp, bp, ri->imap.im_boffset, in xrep_dinode_core()
1588 ri->imap.im_boffset + sc->mp->m_sb.sb_inodesize - 1); in xrep_dinode_core()
1624 if (ri->ino_sick_mask) in xrep_dinode_core()
1625 xfs_inode_mark_sick(sc->ip, ri->ino_sick_mask); in xrep_dinode_core()
1632 struct xrep_inode *ri) in xrep_dinode_problems() argument
1634 struct xfs_scrub *sc = ri->sc; in xrep_dinode_problems()
1637 error = xrep_dinode_core(ri); in xrep_dinode_problems()
2046 struct xrep_inode *ri = sc->buf; in xrep_inode() local
2048 ASSERT(ri != NULL); in xrep_inode()
2050 error = xrep_dinode_problems(ri); in xrep_inode()