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
276 fa = xfs_inode_validate_cowextsize(sc->mp, value, mode, flags, flags2); in xchk_inode_cowextsize()
278 xchk_ino_set_corrupt(sc, ino); in xchk_inode_cowextsize()
291 value % sc->mp->m_sb.sb_rextsize > 0) in xchk_inode_cowextsize()
292 xchk_ino_set_warning(sc, ino); in xchk_inode_cowextsize()
298 struct xfs_scrub *sc, in xchk_inode_flags() argument
304 struct xfs_mount *mp = sc->mp; in xchk_inode_flags()
337 xchk_ino_set_corrupt(sc, ino); in xchk_inode_flags()
343 struct xfs_scrub *sc, in xchk_inode_flags2() argument
350 struct xfs_mount *mp = sc->mp; in xchk_inode_flags2()
354 xchk_ino_set_warning(sc, ino); in xchk_inode_flags2()
386 xchk_ino_set_corrupt(sc, ino); in xchk_inode_flags2()
391 struct xfs_scrub *sc, in xchk_dinode_nsec() argument
400 xchk_ino_set_corrupt(sc, ino); in xchk_dinode_nsec()
406 struct xfs_scrub *sc, in xchk_dinode() argument
410 struct xfs_mount *mp = sc->mp; in xchk_dinode()
439 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
450 xchk_ino_set_preen(sc, ino); in xchk_dinode()
457 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
460 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
463 if (dip->di_mode == 0 && sc->ip) in xchk_dinode()
464 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
468 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
473 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
486 xchk_ino_set_warning(sc, ino); in xchk_dinode()
493 xchk_ino_set_warning(sc, ino); in xchk_dinode()
500 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
504 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
508 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
512 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
516 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
520 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
525 xchk_dinode_nsec(sc, ino, dip, dip->di_atime); in xchk_dinode()
526 xchk_dinode_nsec(sc, ino, dip, dip->di_mtime); in xchk_dinode()
527 xchk_dinode_nsec(sc, ino, dip, dip->di_ctime); in xchk_dinode()
536 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
540 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
544 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
548 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
557 xchk_ino_set_warning(sc, ino); in xchk_dinode()
572 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
575 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
578 xchk_inode_flags(sc, dip, ino, mode, flags); in xchk_dinode()
580 xchk_inode_extsize(sc, dip, ino, mode, flags); in xchk_dinode()
590 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
594 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
598 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
604 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
606 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
608 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
614 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
621 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
625 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
629 xchk_ino_set_corrupt(sc, ino); in xchk_dinode()
633 xchk_dinode_nsec(sc, ino, dip, dip->di_crtime); in xchk_dinode()
634 xchk_inode_flags2(sc, dip, ino, mode, flags, flags2); in xchk_dinode()
635 xchk_inode_cowextsize(sc, dip, ino, mode, flags, in xchk_dinode()
647 struct xfs_scrub *sc, in xchk_inode_xref_finobt() argument
655 if (!sc->sa.fino_cur || xchk_skip_xref(sc->sm)) in xchk_inode_xref_finobt()
658 agino = XFS_INO_TO_AGINO(sc->mp, ino); in xchk_inode_xref_finobt()
664 error = xfs_inobt_lookup(sc->sa.fino_cur, agino, XFS_LOOKUP_LE, in xchk_inode_xref_finobt()
666 if (!xchk_should_check_xref(sc, &error, &sc->sa.fino_cur) || in xchk_inode_xref_finobt()
670 error = xfs_inobt_get_rec(sc->sa.fino_cur, &rec, &has_record); in xchk_inode_xref_finobt()
671 if (!xchk_should_check_xref(sc, &error, &sc->sa.fino_cur) || in xchk_inode_xref_finobt()
684 xchk_btree_xref_set_corrupt(sc, sc->sa.fino_cur, 0); in xchk_inode_xref_finobt()
690 struct xfs_scrub *sc, in xchk_inode_xref_bmap() argument
698 if (xchk_skip_xref(sc->sm)) in xchk_inode_xref_bmap()
702 error = xchk_inode_count_blocks(sc, XFS_DATA_FORK, &nextents, &count); in xchk_inode_xref_bmap()
703 if (!xchk_should_check_xref(sc, &error, NULL)) in xchk_inode_xref_bmap()
706 xchk_ino_xref_set_corrupt(sc, sc->ip->i_ino); in xchk_inode_xref_bmap()
708 error = xchk_inode_count_blocks(sc, XFS_ATTR_FORK, &nextents, &acount); in xchk_inode_xref_bmap()
709 if (!xchk_should_check_xref(sc, &error, NULL)) in xchk_inode_xref_bmap()
712 xchk_ino_xref_set_corrupt(sc, sc->ip->i_ino); in xchk_inode_xref_bmap()
716 xchk_ino_xref_set_corrupt(sc, sc->ip->i_ino); in xchk_inode_xref_bmap()
722 struct xfs_scrub *sc, in xchk_inode_xref() argument
730 if (sc->sm->sm_flags & XFS_SCRUB_OFLAG_CORRUPT) in xchk_inode_xref()
733 agno = XFS_INO_TO_AGNO(sc->mp, ino); in xchk_inode_xref()
734 agbno = XFS_INO_TO_AGBNO(sc->mp, ino); in xchk_inode_xref()
736 error = xchk_ag_init_existing(sc, agno, &sc->sa); in xchk_inode_xref()
737 if (!xchk_xref_process_error(sc, agno, agbno, &error)) in xchk_inode_xref()
740 xchk_xref_is_used_space(sc, agbno, 1); in xchk_inode_xref()
741 xchk_inode_xref_finobt(sc, ino); in xchk_inode_xref()
742 xchk_xref_is_only_owned_by(sc, agbno, 1, &XFS_RMAP_OINFO_INODES); in xchk_inode_xref()
743 xchk_xref_is_not_shared(sc, agbno, 1); in xchk_inode_xref()
744 xchk_xref_is_not_cow_staging(sc, agbno, 1); in xchk_inode_xref()
745 xchk_inode_xref_bmap(sc, dip); in xchk_inode_xref()
748 xchk_ag_free(sc, &sc->sa); in xchk_inode_xref()
759 struct xfs_scrub *sc, in xchk_inode_check_reflink_iflag() argument
762 struct xfs_mount *mp = sc->mp; in xchk_inode_check_reflink_iflag()
769 error = xfs_reflink_inode_has_shared_extents(sc->tp, sc->ip, in xchk_inode_check_reflink_iflag()
771 if (!xchk_xref_process_error(sc, XFS_INO_TO_AGNO(mp, ino), in xchk_inode_check_reflink_iflag()
774 if (xfs_is_reflink_inode(sc->ip) && !has_shared) in xchk_inode_check_reflink_iflag()
775 xchk_ino_set_preen(sc, ino); in xchk_inode_check_reflink_iflag()
776 else if (!xfs_is_reflink_inode(sc->ip) && has_shared) in xchk_inode_check_reflink_iflag()
777 xchk_ino_set_corrupt(sc, ino); in xchk_inode_check_reflink_iflag()
786 struct xfs_scrub *sc) in xchk_inode_check_unlinked() argument
788 if (VFS_I(sc->ip)->i_nlink == 0) { in xchk_inode_check_unlinked()
789 if (!xfs_inode_on_unlinked_list(sc->ip)) in xchk_inode_check_unlinked()
790 xchk_ino_set_corrupt(sc, sc->ip->i_ino); in xchk_inode_check_unlinked()
792 if (xfs_inode_on_unlinked_list(sc->ip)) in xchk_inode_check_unlinked()
793 xchk_ino_set_corrupt(sc, sc->ip->i_ino); in xchk_inode_check_unlinked()
800 struct xfs_scrub *sc) in xchk_inode() argument
806 * If sc->ip is NULL, that means that the setup function called in xchk_inode()
810 if (!sc->ip) { in xchk_inode()
811 xchk_ino_set_corrupt(sc, sc->sm->sm_ino); in xchk_inode()
816 xfs_inode_to_disk(sc->ip, &di, 0); in xchk_inode()
817 xchk_dinode(sc, &di, sc->ip->i_ino); in xchk_inode()
818 if (sc->sm->sm_flags & XFS_SCRUB_OFLAG_CORRUPT) in xchk_inode()
826 if (S_ISREG(VFS_I(sc->ip)->i_mode)) in xchk_inode()
827 xchk_inode_check_reflink_iflag(sc, sc->ip->i_ino); in xchk_inode()
829 xchk_inode_check_unlinked(sc); in xchk_inode()
831 xchk_inode_xref(sc, sc->ip->i_ino, &di); in xchk_inode()