Lines Matching full:sc
33 struct xfs_scrub *sc) in xchk_prepare_iscrub() argument
37 xchk_ilock(sc, XFS_IOLOCK_EXCL); in xchk_prepare_iscrub()
39 error = xchk_trans_alloc(sc, 0); in xchk_prepare_iscrub()
43 error = xchk_ino_dqattach(sc); in xchk_prepare_iscrub()
47 xchk_ilock(sc, XFS_ILOCK_EXCL); in xchk_prepare_iscrub()
54 struct xfs_scrub *sc, in xchk_install_handle_iscrub() argument
59 error = xchk_install_handle_inode(sc, ip); in xchk_install_handle_iscrub()
74 xchk_irele(sc, ip); in xchk_install_handle_iscrub()
75 sc->ip = NULL; in xchk_install_handle_iscrub()
79 return xchk_prepare_iscrub(sc); in xchk_install_handle_iscrub()
90 struct xfs_scrub *sc) in xchk_setup_inode() argument
94 struct xfs_mount *mp = sc->mp; in xchk_setup_inode()
95 struct xfs_inode *ip_in = XFS_I(file_inode(sc->file)); in xchk_setup_inode()
98 xfs_agnumber_t agno = XFS_INO_TO_AGNO(mp, sc->sm->sm_ino); in xchk_setup_inode()
101 if (xchk_need_intent_drain(sc)) in xchk_setup_inode()
102 xchk_fsgates_enable(sc, XCHK_FSGATES_DRAIN); in xchk_setup_inode()
105 if (sc->sm->sm_ino == 0 || sc->sm->sm_ino == ip_in->i_ino) { in xchk_setup_inode()
106 error = xchk_install_live_inode(sc, ip_in); in xchk_setup_inode()
110 return xchk_prepare_iscrub(sc); in xchk_setup_inode()
119 if (!xfs_has_metadir(mp) && xfs_is_sb_inum(mp, sc->sm->sm_ino)) in xchk_setup_inode()
122 if (!xfs_verify_ino(sc->mp, sc->sm->sm_ino)) in xchk_setup_inode()
126 error = xchk_iget_safe(sc, sc->sm->sm_ino, &ip); in xchk_setup_inode()
128 return xchk_install_handle_iscrub(sc, ip); in xchk_setup_inode()
156 error = xchk_trans_alloc(sc, 0); in xchk_setup_inode()
160 error = xchk_iget_agi(sc, sc->sm->sm_ino, &agi_bp, &ip); in xchk_setup_inode()
163 xchk_trans_cancel(sc); in xchk_setup_inode()
164 return xchk_install_handle_iscrub(sc, ip); in xchk_setup_inode()
189 pag = xfs_perag_get(mp, XFS_INO_TO_AGNO(mp, sc->sm->sm_ino)); in xchk_setup_inode()
195 error = xfs_imap(pag, sc->tp, sc->sm->sm_ino, &imap, in xchk_setup_inode()
214 if (xchk_could_repair(sc)) in xchk_setup_inode()
215 xrep_setup_inode(sc, &imap); in xchk_setup_inode()
219 xchk_trans_cancel(sc); in xchk_setup_inode()
221 trace_xchk_op_error(sc, agno, XFS_INO_TO_AGBNO(mp, sc->sm->sm_ino), in xchk_setup_inode()
226 xchk_trans_cancel(sc); in xchk_setup_inode()
235 struct xfs_scrub *sc, in xchk_inode_extsize() argument
244 fa = xfs_inode_validate_extsize(sc->mp, value, mode, flags); in xchk_inode_extsize()
246 xchk_ino_set_corrupt(sc, ino); in xchk_inode_extsize()
259 xfs_extlen_to_rtxmod(sc->mp, value) > 0) in xchk_inode_extsize()
260 xchk_ino_set_warning(sc, ino); in xchk_inode_extsize()
266 struct xfs_scrub *sc, in xchk_inode_cowextsize() argument
279 if (xfs_has_zoned(sc->mp) && in xchk_inode_cowextsize()
283 fa = xfs_inode_validate_cowextsize(sc->mp, value, mode, flags, flags2); in xchk_inode_cowextsize()
285 xchk_ino_set_corrupt(sc, ino); in xchk_inode_cowextsize()
298 value % sc->mp->m_sb.sb_rextsize > 0) in xchk_inode_cowextsize()
299 xchk_ino_set_warning(sc, ino); in xchk_inode_cowextsize()
305 struct xfs_scrub *sc, in xchk_inode_flags() argument
311 struct xfs_mount *mp = sc->mp; in xchk_inode_flags()
344 xchk_ino_set_corrupt(sc, ino); in xchk_inode_flags()
350 struct xfs_scrub *sc, in xchk_inode_flags2() argument
357 struct xfs_mount *mp = sc->mp; in xchk_inode_flags2()
361 xchk_ino_set_warning(sc, ino); in xchk_inode_flags2()
393 xchk_ino_set_corrupt(sc, ino); in xchk_inode_flags2()
398 struct xfs_scrub *sc, in xchk_dinode_nsec() argument
407 xchk_ino_set_corrupt(sc, ino); in xchk_dinode_nsec()
413 struct xfs_scrub *sc, in xchk_dinode() argument
417 struct xfs_mount *mp = sc->mp; in xchk_dinode()
446 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
457 xchk_ino_set_preen(sc, ino); in xchk_dinode()
464 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
467 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
470 if (dip->di_mode == 0 && sc->ip) in xchk_dinode()
471 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
475 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
480 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
493 xchk_ino_set_warning(sc, ino); in xchk_dinode()
500 xchk_ino_set_warning(sc, ino); in xchk_dinode()
507 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
511 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
515 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
519 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
523 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
527 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
532 xchk_dinode_nsec(sc, ino, dip, dip->di_atime); in xchk_dinode()
533 xchk_dinode_nsec(sc, ino, dip, dip->di_mtime); in xchk_dinode()
534 xchk_dinode_nsec(sc, ino, dip, dip->di_ctime); in xchk_dinode()
543 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
547 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
551 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
555 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
564 xchk_ino_set_warning(sc, ino); in xchk_dinode()
579 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
582 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
585 xchk_inode_flags(sc, dip, ino, mode, flags); in xchk_dinode()
587 xchk_inode_extsize(sc, dip, ino, mode, flags); in xchk_dinode()
597 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
601 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
605 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
611 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
613 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
615 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
621 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
628 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
632 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
636 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
640 xchk_dinode_nsec(sc, ino, dip, dip->di_crtime); in xchk_dinode()
641 xchk_inode_flags2(sc, dip, ino, mode, flags, flags2); in xchk_dinode()
642 xchk_inode_cowextsize(sc, dip, ino, mode, flags, in xchk_dinode()
654 struct xfs_scrub *sc, in xchk_inode_xref_finobt() argument
662 if (!sc->sa.fino_cur || xchk_skip_xref(sc->sm)) in xchk_inode_xref_finobt()
665 agino = XFS_INO_TO_AGINO(sc->mp, ino); in xchk_inode_xref_finobt()
671 error = xfs_inobt_lookup(sc->sa.fino_cur, agino, XFS_LOOKUP_LE, in xchk_inode_xref_finobt()
673 if (!xchk_should_check_xref(sc, &error, &sc->sa.fino_cur) || in xchk_inode_xref_finobt()
677 error = xfs_inobt_get_rec(sc->sa.fino_cur, &rec, &has_record); in xchk_inode_xref_finobt()
678 if (!xchk_should_check_xref(sc, &error, &sc->sa.fino_cur) || in xchk_inode_xref_finobt()
691 xchk_btree_xref_set_corrupt(sc, sc->sa.fino_cur, 0); in xchk_inode_xref_finobt()
697 struct xfs_scrub *sc, in xchk_inode_xref_bmap() argument
705 if (xchk_skip_xref(sc->sm)) in xchk_inode_xref_bmap()
709 error = xchk_inode_count_blocks(sc, XFS_DATA_FORK, &nextents, &count); in xchk_inode_xref_bmap()
710 if (!xchk_should_check_xref(sc, &error, NULL)) in xchk_inode_xref_bmap()
713 xchk_ino_xref_set_corrupt(sc, sc->ip->i_ino); in xchk_inode_xref_bmap()
715 error = xchk_inode_count_blocks(sc, XFS_ATTR_FORK, &nextents, &acount); in xchk_inode_xref_bmap()
716 if (!xchk_should_check_xref(sc, &error, NULL)) in xchk_inode_xref_bmap()
719 xchk_ino_xref_set_corrupt(sc, sc->ip->i_ino); in xchk_inode_xref_bmap()
723 xchk_ino_xref_set_corrupt(sc, sc->ip->i_ino); in xchk_inode_xref_bmap()
729 struct xfs_scrub *sc, in xchk_inode_xref() argument
737 if (sc->sm->sm_flags & XFS_SCRUB_OFLAG_CORRUPT) in xchk_inode_xref()
740 agno = XFS_INO_TO_AGNO(sc->mp, ino); in xchk_inode_xref()
741 agbno = XFS_INO_TO_AGBNO(sc->mp, ino); in xchk_inode_xref()
743 error = xchk_ag_init_existing(sc, agno, &sc->sa); in xchk_inode_xref()
744 if (!xchk_xref_process_error(sc, agno, agbno, &error)) in xchk_inode_xref()
747 xchk_xref_is_used_space(sc, agbno, 1); in xchk_inode_xref()
748 xchk_inode_xref_finobt(sc, ino); in xchk_inode_xref()
749 xchk_xref_is_only_owned_by(sc, agbno, 1, &XFS_RMAP_OINFO_INODES); in xchk_inode_xref()
750 xchk_xref_is_not_shared(sc, agbno, 1); in xchk_inode_xref()
751 xchk_xref_is_not_cow_staging(sc, agbno, 1); in xchk_inode_xref()
752 xchk_inode_xref_bmap(sc, dip); in xchk_inode_xref()
755 xchk_ag_free(sc, &sc->sa); in xchk_inode_xref()
766 struct xfs_scrub *sc, in xchk_inode_check_reflink_iflag() argument
769 struct xfs_mount *mp = sc->mp; in xchk_inode_check_reflink_iflag()
776 error = xfs_reflink_inode_has_shared_extents(sc->tp, sc->ip, in xchk_inode_check_reflink_iflag()
778 if (!xchk_xref_process_error(sc, XFS_INO_TO_AGNO(mp, ino), in xchk_inode_check_reflink_iflag()
781 if (xfs_is_reflink_inode(sc->ip) && !has_shared) in xchk_inode_check_reflink_iflag()
782 xchk_ino_set_preen(sc, ino); in xchk_inode_check_reflink_iflag()
783 else if (!xfs_is_reflink_inode(sc->ip) && has_shared) in xchk_inode_check_reflink_iflag()
784 xchk_ino_set_corrupt(sc, ino); in xchk_inode_check_reflink_iflag()
793 struct xfs_scrub *sc) in xchk_inode_check_unlinked() argument
795 if (VFS_I(sc->ip)->i_nlink == 0) { in xchk_inode_check_unlinked()
796 if (!xfs_inode_on_unlinked_list(sc->ip)) in xchk_inode_check_unlinked()
797 xchk_ino_set_corrupt(sc, sc->ip->i_ino); in xchk_inode_check_unlinked()
799 if (xfs_inode_on_unlinked_list(sc->ip)) in xchk_inode_check_unlinked()
800 xchk_ino_set_corrupt(sc, sc->ip->i_ino); in xchk_inode_check_unlinked()
807 struct xfs_scrub *sc) in xchk_inode() argument
813 * If sc->ip is NULL, that means that the setup function called in xchk_inode()
817 if (!sc->ip) { in xchk_inode()
818 xchk_ino_set_corrupt(sc, sc->sm->sm_ino); in xchk_inode()
823 xfs_inode_to_disk(sc->ip, &di, 0); in xchk_inode()
824 xchk_dinode(sc, &di, sc->ip->i_ino); in xchk_inode()
825 if (sc->sm->sm_flags & XFS_SCRUB_OFLAG_CORRUPT) in xchk_inode()
833 if (S_ISREG(VFS_I(sc->ip)->i_mode)) in xchk_inode()
834 xchk_inode_check_reflink_iflag(sc, sc->ip->i_ino); in xchk_inode()
836 xchk_inode_check_unlinked(sc); in xchk_inode()
838 xchk_inode_xref(sc, sc->ip->i_ino, &di); in xchk_inode()