From: Darrick J. Wong Date: Thu, 21 Nov 2024 00:24:18 +0000 (-0800) Subject: xfs_repair: refactor marking of metadata inodes X-Git-Tag: xfs-zoned-2025-01-08~270 X-Git-Url: https://www.infradead.org/git/?a=commitdiff_plain;h=c9b81c74cc547be2e8d46ddd1d6c49db35d8b25d;p=users%2Fhch%2Fxfsprogs.git xfs_repair: refactor marking of metadata inodes Refactor the mechanics of marking a metadata inode into a helper function so that we don't have to open-code that for every single metadata inode. Signed-off-by: "Darrick J. Wong" --- diff --git a/repair/phase6.c b/repair/phase6.c index 0f13d996f..0c80c4aa3 100644 --- a/repair/phase6.c +++ b/repair/phase6.c @@ -2891,61 +2891,41 @@ _("error %d fixing shortform directory %llu\n"), libxfs_irele(ip); } -/* - * mark realtime bitmap and summary inodes as reached. - * quota inode will be marked here as well - */ static void -mark_standalone_inodes(xfs_mount_t *mp) +mark_inode( + struct xfs_mount *mp, + xfs_ino_t ino) { - ino_tree_node_t *irec; + struct ino_tree_node *irec; int offset; - irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rbmino), - XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rbmino)); + irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, ino), + XFS_INO_TO_AGINO(mp, ino)); - offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rbmino) - - irec->ino_startnum; + offset = XFS_INO_TO_AGINO(mp, ino) - irec->ino_startnum; add_inode_reached(irec, offset); +} - irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, mp->m_sb.sb_rsumino), - XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rsumino)); - - offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_rsumino) - - irec->ino_startnum; +/* + * mark realtime bitmap and summary inodes as reached. + * quota inode will be marked here as well + */ +static void +mark_standalone_inodes(xfs_mount_t *mp) +{ + mark_inode(mp, mp->m_sb.sb_rbmino); + mark_inode(mp, mp->m_sb.sb_rsumino); - add_inode_reached(irec, offset); + if (!fs_quotas) + return; - if (fs_quotas) { - if (mp->m_sb.sb_uquotino - && mp->m_sb.sb_uquotino != NULLFSINO) { - irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, - mp->m_sb.sb_uquotino), - XFS_INO_TO_AGINO(mp, mp->m_sb.sb_uquotino)); - offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_uquotino) - - irec->ino_startnum; - add_inode_reached(irec, offset); - } - if (mp->m_sb.sb_gquotino - && mp->m_sb.sb_gquotino != NULLFSINO) { - irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, - mp->m_sb.sb_gquotino), - XFS_INO_TO_AGINO(mp, mp->m_sb.sb_gquotino)); - offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_gquotino) - - irec->ino_startnum; - add_inode_reached(irec, offset); - } - if (mp->m_sb.sb_pquotino - && mp->m_sb.sb_pquotino != NULLFSINO) { - irec = find_inode_rec(mp, XFS_INO_TO_AGNO(mp, - mp->m_sb.sb_pquotino), - XFS_INO_TO_AGINO(mp, mp->m_sb.sb_pquotino)); - offset = XFS_INO_TO_AGINO(mp, mp->m_sb.sb_pquotino) - - irec->ino_startnum; - add_inode_reached(irec, offset); - } - } + if (mp->m_sb.sb_uquotino && mp->m_sb.sb_uquotino != NULLFSINO) + mark_inode(mp, mp->m_sb.sb_uquotino); + if (mp->m_sb.sb_gquotino && mp->m_sb.sb_gquotino != NULLFSINO) + mark_inode(mp, mp->m_sb.sb_gquotino); + if (mp->m_sb.sb_pquotino && mp->m_sb.sb_pquotino != NULLFSINO) + mark_inode(mp, mp->m_sb.sb_pquotino); } static void